2013-02-28 16 views
6

Trong tài liệu hướng dẫn phương pháp này nó viết rằng:Cách Canvas.drawText() thực sự rút ra văn bản?

x The x-coordinate of origin for where to draw the text 
y The y-coordinate of origin for where to draw the text 

Nhưng nó không nói gì về hướng văn bản này được rút ra. Tôi biết rằng các văn bản được rút ra từ nguồn gốc, nhưng khi tôi đưa ra những lập luận sau đây, văn bản của tôi bị cắt:

canvas.drawText(displayText, 0, canvas.getHeight(), textPaint); 

ngoài, giả sử tôi đang sử dụng Align.LEFT (nghĩa là văn bản được rút ra ở bên phải của nguồn gốc x, y)

Vì vậy, các đối số chính xác sẽ là gì (giả sử tôi không muốn sử dụng số cố định)?

+0

có thể đây là những gì bạn đang tìm kiếm (kiểm tra nhận xét về câu trả lời). http://stackoverflow.com/questions/10606410/android-canvas-drawtext-y-position-of-text –

+0

văn bản bị cắt như thế nào? Có văn bản nào hiển thị không? – Barney

+0

Nếu bạn cố gắng đặt giá trị y thành canvas.getHeight()/2, nó có hiển thị chính xác văn bản xuất hiện ở giữa không? Ngoài ra, bạn nên nói những gì bạn muốn thực hiện cụ thể hơn. – Barney

Trả lời

2

Đây là những gì tôi cuối cùng được sử dụng:

@Override 
protected void onDraw(Canvas canvas) { 
    super.onDraw(canvas); 
    if (textAlignment == Align.CENTER) { 
     canvas.drawText(displayText, canvas.getWidth()/2, canvas.getHeight()-TEXT_PADDING, textPaint); 
    } 
    else if (textAlignment == Align.RIGHT) { 
     canvas.drawText(displayText, canvas.getWidth()-TEXT_PADDING, canvas.getHeight()-TEXT_PADDING, textPaint); 
    } 
    else if (textAlignment == Align.LEFT) { 
     canvas.drawText(displayText, TEXT_PADDING, canvas.getHeight()-TEXT_PADDING, textPaint); 
    } 
    //canvas.drawRect(0, 0, canvas.getWidth(), canvas.getHeight(), p); 
} 

Hai nhận xét:

  1. TEXT_PADDING là một chiều hướng dp tôi chuyển sang pixel trong thời gian chạy (trong trường hợp 3DP của tôi).
  2. Bạn có thể bỏ đánh dấu dòng cuối cùng để vẽ trực tiếp xung quanh canvas của bạn để gỡ lỗi.
2

lẽ bạn có thể sử dụng đoạn mã sau để xem nếu làm việc hay không của nó:

int width = this.getMeasuredWidth()/2; 
int height = this.getMeasuredHeight()/2; 
textPaint.setTextAlign(Align.LEFT); 
canvas.drawText(displayText, width, height, textPaint); 

Chiều rộng và chiều cao chỉ là tính tùy tiện trong trường hợp của tôi.

+0

Nó bị cắt, xin vui lòng xem bình luận của tôi .. –

Các vấn đề liên quan