2010-05-20 82 views

回答

6

因此,雖然我沒有測試此,但(對不起沒有SDK安裝在我的前面)

你的TextView應該有它創造了一個噴漆的對象。現在我假定TextPaint已經用正確的填充和偏移量來構建文本視圖的背景圖像。所以,你應該能夠做到像

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

只要改變'rect.getWidth()''到rect.width()'。 – 2013-08-29 12:14:08

4

我知道這是一個老問題,但我在尋找一個類似的答案碰到它,並希望提供的是我找到了解決辦法,如果任何人想知道。

這爲我工作:

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

試試這個:

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

你是對的!你的解決方案是工作! – 2017-01-13 08:04:30