How to check if a TextView String has been trimmed (marquee)?

早过忘川 提交于 2020-01-11 03:28:10

问题


If a TextView does not have enough space in its parent element, I will show an icon. A tab on that text or the icon will be used to call an alert dialog with the full string. So i need to know if a TextView has been trinmmed.


回答1:


Claculate the width of TextView and also calculate the width of text which wil be displayed in the textview. If the width of text is more that the width of textView that means your have to call dialog because because the text will be marqued. Otherwise the text completely fit in the TextView without any issue so no need of dialog box.

use the following code.

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

Thanks Deepak




回答2:


Try using Paint.getFontMetrics to decide how much space the text needs, then calculate if this will fit inside the TextView.



来源:https://stackoverflow.com/questions/6187203/how-to-check-if-a-textview-string-has-been-trimmed-marquee

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!