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

时间:2012-02-05 14:03:43

标签: android textview

我现在拥有的是TextView元素的ListView。每个TextView元素都显示一个文本(文本长度从12个字到100+不等)。我想要的是让这些TextViews显示文本的一部分(比方说20个字或大约170个字符)。

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

9 个答案:

答案 0 :(得分:143)

这是一个例子。我使用maxLength属性限制size,使用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"/>

答案 1 :(得分:6)

在TextView中使用以下代码

 android:maxLength="65"

...享受

答案 2 :(得分:6)

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

答案 3 :(得分:2)

答案 4 :(得分:2)

我使用maxEms属性来完成此操作。

 <TextView
    android:ellipsize="end"
    android:maxEms="10"/>

答案 5 :(得分: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)
 }

答案 6 :(得分:1)

我正在分享一个示例,其中我设置了maxLength = 1,即将其限制为具有maxLines属性的单行,然后使用ellipsize = end将“ ...”自动添加到已隔断。

请注意:layout_width为120dp,即任何文本120dp之后 超出将触发“ ellipsize = end”属性

直接粘贴以下代码以进行检查。

describe('Launch testsite', () => {
    it('enter details and submit', () => {
        cy.fixture('testdata').then(testdata => {
            testdata.forEach(data => {
                const ModuleID = data.ModuleID;
                const LoginName = data.LoginName;
                const gameid = data.gameid;

                cy.get('#ModuleID').type(ModuleID);
                cy.get('#LoginName').type(LoginName);
                cy.get('#gameid').type(gameid);
                cy.get('#btnSubmit').click();

                // in a real test you probably need to do some kind of assertion here
            });
        });
    });
});

答案 7 :(得分:0)

正如https://stackoverflow.com/a/6165470/1818089&amp; https://stackoverflow.com/a/6239007/1818089,使用

android:minEms="2"

应该足以实现上述目标。

答案 8 :(得分:-5)

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