2012-02-17 39 views
10

Tôi có một TextView có văn bản có thể chạy đến nhiều dòng. Một khi nó đã được tạo ra và thiết lập tự động, tôi muốnAndroid TextView và nhận dòng văn bản

  1. Lấy văn bản trên một đường thẳng cho trước, và
  2. Biết chiều rộng và chiều cao của dòng này.

Làm cách nào để thực hiện việc này?

Trả lời

20

Nếu tôi hiểu đúng câu trả lời cho câu hỏi 2 là:

textView.getLineBounds (int line, Rect bounds) 

Chiều rộng bằng pixel nên abs(bounds.right - bounds.left); và chiều cao là abs(bounds.bottom - bounds.top)

câu hỏi đầu tiên của bạn là phức tạp hơn một chút, nhưng một cái gì đó như thế này nên làm sự kỳ diệu yêu cầu:

Layout layout = textView.getLayout(); 
String text = textView.getText().toString(); 
int start=0; 
int end; 
for (int i=0; i<textView.getLineCount(); i++) { 
    end = layout.getLineEnd(i); 
    line[i] = text.substring(start,end); 
    start = end; 
} 
+1

'String text = textView.getText(); 'không hoạt động – Deqing

+0

Bạn sẽ cần phải thực hiện một 'toString()' trên nó. Tôi cũng sẽ làm một kiểm tra để đảm bảo 'textView.getText! = Null' để tránh cảnh báo trình biên dịch. – LukeWaggoner

+0

Ý tưởng tuyệt vời về việc bố trí TextView và truy vấn nó cho kích thước dòng! Chính xác những gì tôi đang tìm kiếm –

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