動作しない次のレイアウトがあります:
<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>
これはよくある問題です。以下を使用してみてください。
Android:scrollHorizontally="true"
Android:ellipsize="end"
Android:maxLines="1"
.............. scrollHorizontallyは、それを機能させる「特別なソース」です。
これはまた、楕円で単一行を作成します
Android:singleLine="true"
これを使用
Android:ellipsize="end"
Android:singleLine="true"
出力の内容を完全に認識せずにこれを使用しないでください
Android:ellipsize="end"
Android:maxLines="1"
maxlines = 1
を使用すると、ほとんどの文字が切り捨てられる場合があります。
複数のデバイス/ 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);
}
したがって、上記のすべての回答は、1行のみで、その後に省略記号が表示されるという要件に対応しています。ただし、特定のテキスト行の後に省略記号を表示する場合は、次を使用する必要があります。
Android:ellipsize="end"
Android:maxLines="2"
Android:singleLine="false"
これにより、省略記号は2行後にのみ表示されます。注:singleLineをfalseにすることが重要です。