Как проверить, была ли обрезана строка TextView (выделено)? - PullRequest
3 голосов
/ 31 мая 2011

Если у TextView недостаточно места в родительском элементе, я покажу значок. Вкладка с этим текстом или значок будет использоваться для вызова диалогового окна с полной строкой предупреждения. Так что мне нужно знать, был ли TextView обрезан.

Ответы [ 2 ]

5 голосов
/ 31 мая 2011

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

используйте следующий код.

@Override
public void onWindowFocusChanged(boolean hasFocus) {
    // TODO Auto-generated method stub
    super.onWindowFocusChanged(hasFocus);
//  System.out.println("...111Height..."+mainLayout.getMeasuredHeight());

    isMarqueed("I am fine here. How r u", textView.getWidth(), textView);
    isMarqueed("I am fine", textView.getWidth(), textView);
}


private boolean isMarqueed(String text, int textWidth, TextView tv) { 
    Paint testPaint = new Paint();
    testPaint.set(tv.getPaint());
    boolean isMarquee = true;
    if (textWidth > 0) {
        int availableWidth = (int) (textWidth - tv.getPaddingLeft() - tv.getPaddingRight()-testPaint.measureText(text));
        System.out.println("...available width..."+availableWidth);
//        tv.setText(text);
        isMarquee = false;
    }
    return isMarquee;
}

Спасибо Дипак

0 голосов
/ 31 мая 2011

Попробуйте использовать Paint.getFontMetrics, чтобы решить, сколько места нужно тексту, а затем рассчитать, будет ли он помещаться в TextView.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...