Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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.

like image 933
Webworx23 Avatar asked Oct 12 '25 08:10

Webworx23


1 Answers

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

like image 144
Sunil Kumar Sahoo Avatar answered Oct 13 '25 21:10

Sunil Kumar Sahoo



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!