web-dev-qa-db-ja.com

TextViewが1行より長い場合、どのようにTextViewに楕円を表示できますか?

動作しない次のレイアウトがあります:

<LinearLayout 
    Android:orientation="horizontal" 
    Android:layout_width="match_parent" 
    Android:id="@+id/experienceLayout" 
    Android:background="#ffffff" 
    Android:layout_height="match_parent" 
    Android:paddingLeft="6dp" 
    Android:paddingRight="6dp" 
    Android:paddingBottom="6dp" 
    Android:paddingTop="6dp">

    <TextView 
        Android:layout_weight="1" 
        Android:id="@+id/experienceLabel" 
        Android:text="Experience" 
        Android:layout_height="wrap_content" 
        Android:textColor="#000000" 
        Android:layout_width="wrap_content" 
        Android:textStyle="bold">
    </TextView>

    <TextView 
        Android:id="@+id/experienceTextView" 
        Android:text="TextView" 
        Android:layout_height="wrap_content" 
        Android:textColor="#000000" 
        Android:layout_width="wrap_content" 
        Android:ellipsize="end" 
        Android:lines="1" 
        Android:maxLines="1" 
        Android:singleLine="true" 
        Android:fadeScrollbars="false">
    </TextView>

</LinearLayout>
88
Sheehan Alam

これはよくある問題です。以下を使用してみてください。

Android:scrollHorizontally="true"
Android:ellipsize="end" 
Android:maxLines="1"

.............. scrollHorizo​​ntallyは、それを機能させる「特別なソース」です。

266
BonanzaDriver

これはまた、楕円で単一行を作成します

 Android:singleLine="true"
30
Atul Bhardwaj

これを使用

Android:ellipsize="end"  
Android:singleLine="true"

出力の内容を完全に認識せずにこれを使用しないでください

Android:ellipsize="end"  
Android:maxLines="1"

maxlines = 1を使用すると、ほとんどの文字が切り捨てられる場合があります。

19
Mohamed Ibrahim

複数のデバイス/ APIでの動作は、プログラム的に次のようになりました(tvはTextViewです)。

    if (tv.getLineCount() > 1) {
        int lineEndIndex = tv.getLayout().getLineEnd(0);
        String text = tv.getText().subSequence(0, lineEndIndex - 3) + "\u2026";
        tv.setText(text);
    }
12
Marilia

したがって、上記のすべての回答は、1行のみで、その後に省略記号が表示されるという要件に対応しています。ただし、特定のテキスト行の後に省略記号を表示する場合は、次を使用する必要があります。

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

これにより、省略記号は2行後にのみ表示されます。注:singleLineをfalseにすることが重要です。

3
SDK4551