2010-02-20 18 views

Trả lời

5

Tôi không nhận thức được một cách trực tiếp đơn giản để làm điều này nhưng bạn sẽ có thể đặt một cái gì đó với nhau bằng cách sử dụng đối tượng Paint của TextView qua một cuộc gọi đến TextView.getPaint()

Một khi bạn có đối tượng sơn bạn sẽ có truy cập vào FontMetrices bên dưới thông qua một cuộc gọi đến Paint.getFontMetrics() và có quyền truy cập vào các chức năng khác như Paint.measureText() Paint.getTextBounds() và Paint.getTextWidths() để truy cập kích thước thực của văn bản được hiển thị.

+0

Cảm ơn, tôi đã kết thúc sử dụng này. Quá xấu không có phương thức "pointToCharacterIndex" đơn giản được tích hợp sẵn, nhưng nó không phải là khoa học tên lửa để cuộn nhờ vào Paint của tôi. – Epaga

+0

Câu trả lời @Tony Blues có loại pointToCharacterIndex mà bạn đang tìm kiếm. –

23

Các bạn đã thử một cái gì đó như thế này:

Layout layout = this.getLayout(); 
if (layout != null) 
{ 
    int line = layout.getLineForVertical(y); 
    int offset = layout.getOffsetForHorizontal(line, x); 

    // At this point, "offset" should be what you want - the character index 
} 

Hope this helps ...

+1

Tôi đã hỏi các kỹ sư của Google tại giờ làm việc của Google IO và điều này cũng giống như họ đã nghĩ ra. –

+0

Tôi rất vui vì tôi đã tìm thấy câu trả lời này, cảm ơn Tony! Nó hoạt động hoàn toàn tốt đẹp! Hiện tại, tôi không gặp bất kỳ sự cố nào khi xử lý sự kiện chạm ngay cả khi TextView chứa hình ảnh. :-) – einschnaehkeee

+0

Cảm ơn bạn đã cứu mạng :) – Mingfei

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