Android 我可以限制TextView';有多少个字符?

Android 我可以限制TextView';有多少个字符?,android,textview,Android,Textview,我现在拥有的是TextView元素的列表视图。每个TextView元素显示一个文本(文本长度从12个单词到100个以上不等)。我想让这些文本视图显示文本的一部分(比如说20个单词或大约170个字符) 如何将TextView限制为固定的字符数?您可以扩展TextView类并覆盖setText()函数。 在此函数中,您可以检查文本长度或单词注释。以下是一个示例。我使用maxLength属性限制大小,使用maxLines属性将其限制为一行,然后使用ellipsize=end将“…”自动添加到任何被截断

我现在拥有的是TextView元素的列表视图。每个TextView元素显示一个文本(文本长度从12个单词到100个以上不等)。我想让这些文本视图显示文本的一部分(比如说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方法

添加了挂起点的TextUtil类的常量
在文本视图中使用以下代码

 android:maxLength="65"

享受…

如果您对xml解决方案不感兴趣,您可以这样做:

String s="Hello world";
Textview someTextView;
someTextView.setText(getSafeSubstring(s, 5));
//the text of someTextView will be Hello

如&,使用


应该足以实现上述目标。

我使用
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)
 }
剪掉文本的结尾:

 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将“…”自动添加到任何被截断的直线的末尾

<TextView 
    android:id="@+id/secondLineTextView" 
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" 
    android:maxLines="1" 
    android:maxLength="10" 
    android:ellipsize="end"/>
请注意:版面宽度为120dp,即120dp后的任何文本 超过将触发“省略=结束”属性

直接粘贴下面的代码进行检查

<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" />


.

“然后使用省略号=选框在任何一行的末尾自动添加一个“…”听起来很有希望。我会试试看。@Booger-android:ellipsize=“marquee”不要在末尾附加省略号(…),它会覆盖截断文本的结尾,作为限制的标志。android:ellipsize=“end”将在末尾添加省略号(…),而android:ellipsize=“start”将在末尾添加省略号start@ajdeguzman如果我想在第二行显示剩余的文本,我该怎么办。我已经设置了maxLines=2,并且没有包含ellipsize参数。我知道还有一个称为em的东西,但我没有得到关于它如何工作的明确解释。我认为布局宽度与触发器ellipsize属性有关。解释得很好的示例,请遵循比计算文本长度或单词CONND更好的方法。更好的方法是使用“maxLines”属性和“ellipsize”属性以达到所需的效果。