我知道这个问题被多次询问,我已经完成了所有解决方案,但问题仍然存在。
我希望我的文字长度为50个字符。现在它有2行。
以下是我的所作所为:
<TextView
android:id="@+id/notification_Message"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/notification_head"
android:layout_centerHorizontal="true"
android:layout_margin="10dp"
android:gravity="center"
android:ellipsize="end"
android:maxLength="50"
android:text=" Hello developer. please check this message for long length. max length to 50 characters. "
android:textSize="20sp" />
这里的文字只是我添加的示例文字。它没有显示3个点,而是显示最多50个字符的消息。我也试过最大行,单行假。但没有积极的结果。 我也不想通过逻辑上添加三个点来以编程方式处理这个事情。
请帮忙
答案 0 :(得分:74)
为TextView设置预设宽度并添加这些属性(Shout-out to @T-D)
android:ellipsize="end"
android:maxLines="1"
maxLines将确保您的文本不会以两行显示,而ellipsize将在最后添加三个点。
旧答案
android:ellipsize="end"
android:singleLine="true"
答案 1 :(得分:28)
对于带点的一行文字,但现在已弃用,所以不再使用android:ellipsize="end"
android:maxLines="2"
感谢这篇文章,我发现如果我们有更多的一行,如何在文本结尾后显示点,它对我有效:)
{{1}}
在此发布此答案,因为此处的所有答案均针对单行而非多线
答案 2 :(得分:10)
android:ellipsize
仅适用于:
android:singleLine="true"
或
android:maxLines="#any number#"
android:scrollHorizontally="true"
因为maxLength会截断文本。
因此,如果您只想显示50个字符+点,或者为文本视图设置两行,则必须使用代码管理标签。
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="2"
android:scrollHorizontally="true"
android:text="Hello developer. please check this message for long length. max length to 50 characters."
android:textSize="20sp" />
答案 3 :(得分:6)
不推荐使用android:singleLine="true"
更好地使用
<强> android:maxLines="1"
强>
和 android:ellipsize="end"
在文字末尾添加“...”
答案 4 :(得分:4)
使用singleLine = "true"
对于singleLine的限制文本
答案 5 :(得分:2)
@Lokesh的方法很好。
android:ellipsize="end"
android:maxLines="2"
但是我意识到TextView会被word截断(默认情况下)。显示我们是否有如下文字:
测试long_line_without_any_space_abcdefgh
TextView将显示:
<强> 测试... 强>
我找到了处理这个问题的解决方案,用unicode no-break空格字符替换空格,它使TextView换行而不是单词:
yourString.replace(" ", "\u00A0");
结果:
测试long_line_without_any_space_abc ...
答案 6 :(得分:1)
创建自定义TextView:
<com.xyz.CustomizedTextViewName
android:id="@+id/app_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:ellipsize="end"
android:singleLine="true"
android:maxEms="10"
app:typeface="roboto_bold"/>
答案 7 :(得分:1)
这就是你想要的答案:
<TextView
android:id="@+id/tv_title"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="wrap_content"
android:text="Title"
android:maxLines="1"
android:ellipsize="end"
android:maxWidth="195dp"
android:textColor="@color/white"
android:textSize="14dp"
android:gravity="center"
/>
答案 8 :(得分:0)
<TextView
android:id="@+id/txt__customizer_item"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:gravity="center"
android:paddingRight="20dp"
android:singleLine="true"
android:text=" Hello developer. please check this message for long length. max length to 50 characters. "
android:textAppearance="@android:style/TextAppearance.Medium"
android:textColor="@color/light_blue"
android:textSize="20sp" />
这适用于me.give填充从右侧。它将自动显示...
答案 9 :(得分:0)
你可以通过xml
:
<TextView
android:id="@+id/textview"
android:maxLines="1" // or any number of lines you want
android:ellipsize="end" />
答案 10 :(得分:0)
如果在 xml 中展示singleLine="true"
,您仍然希望使用单行行为,那么请在代码中使用tv.setSingleLine(true);
方法。