2010-05-20 31 views

Trả lời

6

Vì vậy, trong khi tôi đã không kiểm tra này chưa (xin lỗi không có thiết lập sdk trước mặt tôi)

TextView của bạn nên có một đối tượng Sơn đã tạo cho nó. Bây giờ tôi giả định rằng TextPaint đã được xây dựng với phần đệm chính xác và bù đắp cho hình nền của khung nhìn văn bản. Vì vậy, bạn sẽ có thể làm điều gì đó như

TextView a = getViewById(R.id.textview); 
TextPaint paint = a.getPaint(); 
Rect rect = new Rect(); 
String text = String.valueOf(a.getText()); 
paint.getTextBounds(text, 0, text.length(), rect); 
if(rect.height() > a.getHeight() || rect.getWidth() > a.getWidth()) { 
Log.i("TEST", "Your text is too large"); 
} 
+0

Chỉ cần thay đổi 'rect.getWidth() 'với' rect.width() '. –

4

Tôi biết đây là một câu hỏi cũ, nhưng tôi đi qua nó trong tìm kiếm của tôi cho một câu trả lời tương tự và muốn cung cấp các giải pháp mà tôi thấy, trong trường hợp bất cứ ai khác đang tự hỏi.

này đã làm việc cho tôi:

TextView myTextView = rootView.getViewById(R.id.my_text_view); 
if (myTextView.getLineCount() > myTextView.getMaxLines()) { 
    // your code here 
} 
1

Hãy thử điều này:

mTextView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { 
    @Override 
    public void onGlobalLayout() { 
     ViewTreeObserver obs = mTextView.getViewTreeObserver(); 
     obs.removeOnGlobalLayoutListener(this); 
     int height = mTextView.getHeight(); 
     int scrollY = mTextView.getScrollY(); 
     Layout layout = mTextView.getLayout(); 
     int firstVisibleLineNumber = layout.getLineForVertical(scrollY); 
     int lastVisibleLineNumber = layout.getLineForVertical(height + scrollY); 

     //check is latest line fully visible 
     if (mTextView.getHeight() < layout.getLineBottom(lastVisibleLineNumber)) { 
      // TODO you text is cut 
     } 
    } 
}); 
+0

Bạn đã đúng! Giải pháp của bạn là công việc! –

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