Как узнать, обрезано ли текстовое содержимое TextView? - PullRequest
10 голосов
/ 20 мая 2010

Я могу установить максимальную строку в моем TextView в файле макета XML. В моем коде, после того как я вызову setText () для TextView, как я могу узнать, обрезано ли текстовое содержимое (т. Е. Текст длиннее максимальной строки)?

Спасибо.

Ответы [ 3 ]

8 голосов
/ 17 февраля 2011

Так что, хотя я еще не проверял это (извините, нет настройки SDK передо мной)

В вашем TextView должен быть создан объект 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.width() > a.getWidth()) {
Log.i("TEST", "Your text is too large");
}
5 голосов
/ 24 августа 2013

Я знаю, что это старый вопрос, но я наткнулся на него в поисках аналогичного ответа и хотел предложить решение, которое нашел, на случай, если кому-то еще будет интересно.

Это сработало для меня:

TextView myTextView = rootView.getViewById(R.id.my_text_view);
if (myTextView.getLineCount() > myTextView.getMaxLines()) {
  // your code here
}
3 голосов
/ 20 августа 2015

Попробуйте это:

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
        }
    }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...