我可以在佈局xml文件的TextView中設置最大行數。 在我的代碼中,在將TextText()調用到TextView後,如何才能確定文本內容是否已被切斷(即文本比最大行更長)?如何找出TextView文本內容是否已被切斷
謝謝。
我可以在佈局xml文件的TextView中設置最大行數。 在我的代碼中,在將TextText()調用到TextView後,如何才能確定文本內容是否已被切斷(即文本比最大行更長)?如何找出TextView文本內容是否已被切斷
謝謝。
因此,雖然我沒有測試此,但(對不起沒有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");
}
我知道這是一個老問題,但我在尋找一個類似的答案碰到它,並希望提供的是我找到了解決辦法,如果任何人想知道。
這爲我工作:
TextView myTextView = rootView.getViewById(R.id.my_text_view);
if (myTextView.getLineCount() > myTextView.getMaxLines()) {
// your code here
}
試試這個:
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
}
}
});
你是對的!你的解決方案是工作! – 2017-01-13 08:04:30
只要改變'rect.getWidth()''到rect.width()'。 – 2013-08-29 12:14:08