简体   繁体   中英

Android: TextView automatically truncate and replace last 3 char of String

If a String is longer than the TextView 's width it automatically wraps onto the next line. I can avoid this by using android:singleLine (deprecated) or by setting android:inputType="text" . What I need now is something that replaces the last 3 characters of my String with " ... ". Since I'm not using a monospace font this will always be different depending on the letters used in my String . So I'm wondering what's the best way to get the last 3 characters of a String in a TextView and replace them. Maybe there's already something implemented in the Android framework, since this must be a common problem.

You should be able to use the "ellipsize" property of a text view:

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/text_mytext"
    android:ellipsize="end"
    android:maxLines="1"
/>

You may also need to apply gravity values to the layout too; I have sometimes seen "auto-stretching" views without them.

Found an interesting work-a-round for this problem.

maxLines=1
ellipsize=end
scrollHorizontally=true

The trick is that last statement about horizontal scrolling .... check it out. It at least works on v2.2.

Programmatically, you can use:

TextView tx = new TextView(this);
tx.setTextSize(13);
tx.setGravity(Gravity.CENTER);
tx.setTop(90);
tx.setText("Long text here");
tx.setTextColor(Color.BLACK);
tx.setSingleLine(true);
tx.setEllipsize(TruncateAt.END);

Just add

<TextView
    android:id="@+id/newsTitleTextView"
    android:layout_marginLeft="5dp"
    android:layout_toRightOf="@id/newsThumbnailImageView"
    android:ellipsize="end"
    android:maxLines="2"
    android:text="Analysts See Slower Bitcoin Hashrate Growth in 2022 Amid Market Correction "
    android:textSize="15sp" />

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM