如何查看TextView文本内容是否被切断

我可以在布局xml文件的TextView中设置最大行数。 在我的代码中,在将TextText()调用到TextView后,如何才能确定文本内容是否已被切断(即文本比最大行更长)?

谢谢。

Solutions Collecting From Web of "如何查看TextView文本内容是否被切断"

所以虽然我还没有testing过(对不起,没有sdk设置在我面前)

你的TextView应该为它创build一个Paint对象。 现在我会假设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"); } 

我知道这是一个古老的问题,但我在寻找类似的答案时遇到了这个问题,并想提供我find的解决scheme,以防其他人想知道。

这对我工作:

 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 } } });