web-dev-qa-db-ja.com

TextViewに省略記号を設定すると、最後に省略記号だけが表示されるのではなく、1行だけ表示される行が減ります

singleLine="true"およびellipsize="end"(my top TextView)でTextViewを使用している場合、それはうまく機能します

ただし別の場合TextViewは1行以上(私の場合は下に3行TextView)、lines="3" and maxLines="3" and ellipsize="end",ありません正常に動作します。

ellipsize="end"をtvDescに入れないと、3行が表示されますが、これで問題ありません。コードは次のとおりです:XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent" >

    <ImageView
        Android:id="@+id/imgv"
        Android:layout_width="65dp"
        Android:layout_height="80dp"
        Android:layout_alignParentLeft="true"
        Android:layout_alignParentTop="true"
        Android:src="@drawable/img1"
        Android:scaleType="fitXY" />

    <TextView
        Android:id="@+id/tvTitle"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignParentTop="true"
        Android:layout_toRightOf="@+id/imgv"
        Android:background="@Android:color/white"
        Android:textColor="@Android:color/black"
        Android:text="Title testing line number and ellipsize at end"
        Android:maxLines="1"
        Android:singleLine="true"
        Android:ellipsize="end"    <---  WORKS WELL
        Android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        Android:id="@+id/tvDesc"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_below="@+id/tvTitle"
        Android:layout_toRightOf="@+id/imgv"
        Android:layout_alignBottom="@+id/imgv"
        Android:layout_alignParentRight="true"
        Android:textSize="14dp"
        Android:lines="3"
        Android:maxLines="3"
                       <----------  WITHOUT ellipsize

        Android:text="I wanna this textview of having 3 lines and ellipsize at END and at this time I am Testing for it. This TextView shows 3 lines WITHOUT ellipsize property, but shows only 2 Lines when ELLIPSIZE property is setted"
        Android:textAppearance="?android:attr/textAppearanceMedium" />

</RelativeLayout>

上記のコードは、3行で楕円なしのTextView tvDescを示しています。画像は次のとおりです。

enter image description here

しかし、省略したいので、以下のコードを使用します:XML:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent" >

    <ImageView
        Android:id="@+id/imgv"
        Android:layout_width="65dp"
        Android:layout_height="80dp"
        Android:layout_alignParentLeft="true"
        Android:layout_alignParentTop="true"
        Android:src="@drawable/img1"
        Android:scaleType="fitXY" />

    <TextView
        Android:id="@+id/tvTitle"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_alignParentTop="true"
        Android:layout_toRightOf="@+id/imgv"
        Android:background="@Android:color/white"
        Android:textColor="@Android:color/black"
        Android:text="Title testing line number and ellipsize at end"
        Android:maxLines="1"
        Android:singleLine="true"
        Android:ellipsize="end"
        Android:textAppearance="?android:attr/textAppearanceMedium" />

    <TextView
        Android:id="@+id/tvDesc"
        Android:layout_width="wrap_content"
        Android:layout_height="wrap_content"
        Android:layout_below="@+id/tvTitle"
        Android:layout_toRightOf="@+id/imgv"
        Android:layout_alignBottom="@+id/imgv"
        Android:layout_alignParentRight="true"
        Android:textSize="14dp"
        Android:lines="3"
        Android:maxLines="3"
        Android:ellipsize="end"    <------  WITH  ELLIPSIZE

        Android:text="I wanna this textview of having 3 lines and ellipsize at END and at this time I am Testing for it. This TextView shows 3 lines WITHOUT ellipsize property, but shows only 2 Lines when ELLIPSIZE property is setted"
        Android:textAppearance="?android:attr/textAppearanceMedium" />

</RelativeLayout>

2行と省略記号のみでTextView tvDescを表示

followinのように、UIは適切に設計されていません。 enter image description here

ellipsizeを使用してTextView tvDescの3行にしたい

CAN ANYONE HELP ME.?

40

これは私が見つけた最も簡単なソリューションであり、現在展開に使用しています。他にサポートが必要な場合はお知らせください!

一番下のコードを使用して3行の終わりで自動的に楕円化するため、XMLのAndroid:ellipsizeタグを忘れずに削除してください。

TextView snippet;
snippet.setText("loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor loren ipsum dolor ")
ViewTreeObserver vto = this.snippet.getViewTreeObserver();
vto.addOnGlobalLayoutListener(new OnGlobalLayoutListener() {

    @Override
    public void onGlobalLayout() {
        ViewTreeObserver obs = snippet.getViewTreeObserver();
        obs.removeGlobalOnLayoutListener(this);
        if (snippet.getLineCount() > 3) {
            int lineEndIndex = snippet.getLayout().getLineEnd(2);
            String text = snippet.getText().subSequence(0, lineEndIndex - 3) + "...";
            snippet.setText(text);
        }
    }
});
45
Vishwa Patel

Android:maxLinesおよびAndroid:ellipsize

<TextView
        Android:id="@+id/tv_dua"
        Android:ellipsize="end"
        Android:maxLines="3"
        Android:text="long text"
        Android:textAppearance="?android:attr/textAppearanceMedium" />
16
irscomp

次を使用して、最後の行に省略記号を含む複数行のテキストビューを取得します。

Android:maxLines="4"
Android:ellipsize="end"
Android:singleLine="false"

4を必要な行数に置き換えます。それが役に立てば幸い !

2
Shivam Bhalla

MaxLinesで試してみて、Android 7&8で省略します。

Android:maxLines="3"
Android:ellipsize="end"

プレビューには2行が表示され、3行目には「...」が表示されます。

しかし、これはプレビューアのバグのようです。

デバイス上では、3行目のテキスト「...」の最後に、3行のテキストで正常に機能します。

0
McOzD