【发布时间】:2012-02-27 07:43:42
【问题描述】:
我现在拥有的是 TextView 元素的 ListView。每个 TextView 元素显示一个文本(文本长度从 12 个字到 100+ 个不等)。我想要的是让这些 TextViews 显示部分文本(比如说 20 个字或大约 170 个字符)。
如何将 TextView 限制为固定字符数?
【问题讨论】:
我现在拥有的是 TextView 元素的 ListView。每个 TextView 元素显示一个文本(文本长度从 12 个字到 100+ 个不等)。我想要的是让这些 TextViews 显示部分文本(比如说 20 个字或大约 170 个字符)。
如何将 TextView 限制为固定字符数?
【问题讨论】:
您可以扩展 TextView 类并覆盖 setText() 函数。 在此函数中,您检查文本长度或字数。
【讨论】:
这是一个例子。我使用 maxLength 属性限制大小,使用 maxLines 属性将其限制为单行,然后使用 ellipsize=end 自动将“...”添加到已被截断的任何行的末尾。
<TextView
android:id="@+id/secondLineTextView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="1"
android:maxLength="10"
android:ellipsize="end"/>
【讨论】:
可以使用 TextView 类的 setEllipsize 方法 http://developer.android.com/reference/android/widget/TextView.html#setEllipsize(android.text.TextUtils.TruncateAt)
使用 TextUtil 类的常量来添加悬挂点 http://developer.android.com/reference/android/text/TextUtils.TruncateAt.html
【讨论】:
在TextView中使用下面的代码
android:maxLength="65"
享受...
【讨论】:
如果您对 xml 解决方案不感兴趣,也许您可以这样做:
String s="Hello world";
Textview someTextView;
someTextView.setText(getSafeSubstring(s, 5));
//the text of someTextView will be Hello
...
public String getSafeSubstring(String s, int maxLength){
if(!TextUtils.isEmpty(s)){
if(s.length() >= maxLength){
return s.substring(0, maxLength);
}
}
return s;
}
【讨论】:
如https://stackoverflow.com/a/6165470/1818089 & https://stackoverflow.com/a/6239007/1818089 中所述,使用
android:minEms="2"
应该足以实现上述目标。
【讨论】:
我使用maxEms 属性做到了这一点。
<TextView
android:ellipsize="end"
android:maxEms="10"/>
【讨论】:
程序化 Kotlin。
切断文本的开头:
val maxChars = 10000
if (helloWorldTextView.text.length > maxChars) {
helloWorldTextView.text = helloWorldTextView.text.takeLast(maxChars)
}
剪掉正文的结尾:
val maxChars = 10000
if (helloWorldTextView.text.length > maxChars) {
helloWorldTextView.text = helloWorldTextView.text.take(maxChars)
}
【讨论】:
我正在分享一个示例,其中我设置了 maxLength=1,即使用 maxLines 属性将其限制为单行,然后使用 ellipsize=end 自动将“...”添加到已设置的任何行的末尾隔断。
请注意:layout_width 为 120dp,即 120dp 之后的任何文本 超过将触发“ellipsize=end”属性
直接粘贴以下代码即可查看。
<TextView
android:layout_width="120dp"
android:layout_height="wrap_content"
android:ellipsize="end"
android:maxLines="1"
android:maxLength="40"
android:text="Can I limit TextView's number of characters?"
android:textColor="@color/black"
android:textSize="12sp"
android:textStyle="bold" />
.
【讨论】: