我可以限制TextView的字符数吗?


71

我现在拥有的是TextView元素的ListView。每个TextView元素都显示一个文本(文本长度从12个单词到100+个变化)。我想要的是使这些TextView显示一部分文本(假设20个单词或大约170个字符)。

如何将TextView限制为固定数量的字符?

Answers:


165

这是一个例子。我使用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"/>

2
“然后使用ellipsize = marquee将“ ...”自动添加到任何行的末尾”
Booger,2012年

听起来很有前途。我会尝试的。
iTurki 2012年

5
@Booger android:ellipsize =“ marquee”请勿在末尾附加省略号(...),而是将截断文本的末尾作为限制的标志。android:ellipsize =“ end”将在末尾添加省略号(...),而android:ellipsize =“ start”将在开始处添加省略号
ajdeguzman 2014年

@ajdeguzman我应该怎么办,如果我想在第二行中保留其余文本。我已经使maxLines = 2并且没有包含ellipsize参数。我知道也有一些称为em的东西,但是我没有清楚地解释它是如何工作的。
萨加·德文加

我认为layout_width与触发器ellipsize属性有关。详细说明的示例,请点击链接
taranjeetsapra

9

如果您对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;
}




1

程序化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)
 }

1

我正在分享一个示例,其中我已设置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" />



-4

您可以扩展TextView类并覆盖setText()函数。在此功能中,您将检查文本长度或字库。


比计算文本长度或单词cound更好的方法是,将“ maxLines”属性与“ ellipsize”属性一起使用以获得所需的效果。
kapilgm 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.