我有以下布局不起作用:
<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>
答案 0 :(得分:258)
这是一个常见问题。请尝试使用以下内容:
android:scrollHorizontally="true"
android:ellipsize="end"
android:maxLines="1"
.............. scrollHorizontally正是“特殊酱”,使其发挥作用。
答案 1 :(得分:28)
这也将使用ellipsise
创建一行 android:singleLine="true"
答案 2 :(得分:16)
使用此
android:ellipsize="end"
android:singleLine="true"
请勿在未完全了解输出内容的情况下使用此功能
android:ellipsize="end"
android:maxLines="1"
使用maxlines = 1
时,有时会截断大部分字符。
答案 3 :(得分:11)
它在多个设备/ 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);
}
答案 4 :(得分:1)
因此,以上所有答案都满足了只出现1行然后出现省略号的要求。但是,如果希望省略号出现在某些文本行之后,则应使用以下命令:
android:ellipsize="end"
android:maxLines="2"
android:singleLine="false"
这样,省略号将仅出现在2行之后。注意:将singleLine设置为false很重要。
答案 5 :(得分:1)
这帮助了我
android:ellipsize="end"
android:maxLines="1"
android:singleLine="true"
确保将TextView
width
设置为Match_Parent
https://github.com/chrisjenx/Calligraphy/issues/43#issuecomment-523701518
答案 6 :(得分:-1)
android:singleLine
已过时。就我而言,我必须为TextView
设置一个固定的高度,并使用android:lines
属性而不是android:maxLines
。我认为这可以帮助遇到与我相同的问题的人。
android:ellipsize="end"
android:lines="2"