2010-10-25 47 views
6

Xin chào tất cả: Tôi đang viết một lớp kế thừa từ TextView và ghi đè phương thức onDraw() của mình, nhưng trong phương thức, lời gọi của tôi là canvas.drawText() không dường như hoạt động, mã giống như bên dưới:Tại sao lệnh gọi Canvas.drawText() của tôi không hoạt động

protected void onDraw(Canvas canvas) { 
    // super.onDraw(canvas); 
    Paint paint = new Paint(); 
    paint.setColor(android.graphics.Color.WHITE); 
    paint.setTextSize(20); 

    String text = "hello"; 
    canvas.drawText(text, 0, 0, paint); 
} 
+0

@ bemace, Nó làm gì? Điều này sẽ vẽ hello ở góc trên bên trái. Nó có bị hỏng không? Nó có làm gì không? Hành vi ban đầu của textView có thay đổi không? Bạn đang sử dụng TextView bị ghi đè trong Bố cục như thế nào? –

+0

@Greg - Tôi vừa dọn dẹp định dạng mã, user486005 đã hỏi câu hỏi –

Trả lời

18

Nó không vẽ bất kỳ điều gì vì tọa độ văn bản ở dưới cùng bên trái. Vì bạn đang cố gắng vẽ trên 0,0, nó sẽ vẽ phía trên màn hình.

Hãy thử thay đổi dòng cuối cùng để:

canvas.drawText(text, 0, 20, paint); 
+0

@ user486005 Khi thử nghiệm vẽ thường xuyên nhất để thử và vẽ đến điểm đã biết như 100,100 ban đầu để gỡ lỗi rồi lo lắng về vị trí. Bạn sẽ nhận ra vấn đề của mình là vẽ văn bản ra khỏi màn hình bằng cách tiếp cận này. Chỉ là một ý nghĩ. –

+3

Tại sao các tọa độ trên thế giới bắt đầu từ dưới cùng bên trái? Nó luôn ở trên cùng bên trái! –

+0

Ít nhất họ có thể đề cập đến sự khác biệt này trong tài liệu! –

-1

gợi ý tuyệt vời tất cả xung quanh, công việc tuyệt vời chàng trai thực sự. Thời gian tới mặc dù nó sẽ được tốt đẹp nếu bạn hỏi anh chàng trong một bình luận hoặc một cái gì đó hay không, ông đã cố gắng hoàn toàn rõ ràng trước khi gửi nó như là một câu trả lời. Bạn có thực sự nghĩ rằng lần thứ hai anh ta đã đến một điểm mà không được làm việc anh ta chỉ cần đi thẳng vào Stack tràn mà không thử nghiệm?

Tôi có đề xuất thay thế, đủ điên rồ dựa trên toàn bộ câu hỏi và không chỉ là phần có thể trả lời mà không có nhiều kiến ​​thức thực tế.

Tôi khuyên bạn nên thử gọi drawText trên Canvas không nằm trong lớp con TextView theo cách đó sẽ không bị ghi đè bởi hàng trăm dòng mã trong TextView để quản lý trạng thái có thể kéo của nó.

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