在TextView中限制行数

44

我有一个可滚动的textView,我想限制显示的行数,但是xml属性不起作用:

<TextView
   android:id="@+id/tv_addesc"
   android:layout_width="match_parent"
   android:layout_height="wrap_content"
   android:scrollbars="vertical"
   android:maxLines="12"
   android:textColor="#FFFFFFFF"
   android:textSize="15sp" />

显示的行数为50行,文本中有900个字符。

如何限制显示的行数并添加滚动条?

编辑:我测试了846行和15824个字符,无论设置不同的属性,整个文本都被显示。

编辑:除了textView外还有第二个组件,当我移除它时它就正常工作了,所以我会找到解决方法。谢谢!


我认为在这个标签中没有必要定义“isScrollContainer”和“lines”。对我来说,它们没有问题。 - Yogesh Somani
你尝试过将layout_width设置为wrap_content吗? - Yogesh Somani
7个回答

89

您只需要像这样在您的TextView中设置行数:

android:maxLines = "10"

你还必须添加:

android:minLines="1"

如果你不使用滚动,下面的内容就不必要了。

还有一个属性指定这个TextView应该在垂直方向上可滚动:

android:scrollbars = "vertical"

在你的Java代码中:

yourTextView.setMovementMethod(new ScrollingMovementMethod())

抱歉,但这并不会改变任何事情。这是否与textView的字符限制有关? - Jerec TheSith
1
也许可以尝试减少 maxLines,并添加更多的文本。我现在没有可用的环境,所以这只是一个随机猜测。 - Tobias Moe Thorstensen
1
添加 android:minLines="1" - tar
为什么你写了这句话:“[...] 你还必须添加:android:minLines="1"?Android文档没有说明必须同时设置这两个属性,而我的应用程序也不需要设置minLines。在什么情况下才需要设置它? - Erik
对我没用,但是添加了 android:ellipsize="marquee" 后现在可以工作了。 - Shailendra Madda

3

通过id查找您的TextView:

TextView myTextBox=(TextView)findViewById(R.id.textBox);

现在使用setMaxLines函数并将所需的行数分配给它,比如说20。
myTextBox.setMaxLines(20);

这将限制你的文本框只能显示20行。


3

试着使用这个。

android:maxLines="12"
android:ellipsize="end"

最终,如果有额外的文本可用,它会添加 ...
您还可以使用
android:ellipsize="marquee" 

它将减少不像单词的末尾多余文本。

2
将您的文本视图放在滚动视图中,并设置滚动视图的固定高度。
<ScrollView
    android:id="@+id/scrollView1"
    android:layout_width="fill_parent"
    android:layout_height="120dip" >

    <TextView
        android:id="@+id/tv_addesc"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:maxLines="12"
        android:scrollbars="vertical"
        android:textColor="#FFFFFFFF"
        android:textSize="15sp" />
</ScrollView>

根据您的需求设置属性


由于属性maxLines="12"无法正常工作,整个文本将被显示(50行 - 900个字符)。 - Jerec TheSith
请根据您的需要增加或减少滚动视图的高度 android:layout_height="120dip" >。 - Jignesh Ansodariya

2
<ScrollView
android:id="@+id/scrollView1"
android:layout_width="fill_parent"
android:layout_height="120dip" >

<TextView
    android:id="@+id/tv_addesc"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:maxLines="12"
    android:scrollbars="vertical"
    android:textColor="#FFFFFFFF"
    android:textSize="15sp" />
 </ScrollView>

1
嘿,尝试将singleline属性设置为false。只是看看它是否有效。

1
即使使用android:singleLine="true"也不起作用。 - Jerec TheSith
1
不要给scrollView设置静态高度...将其设置为wrap content,然后将textView添加到线性或相对布局中..然后您可以为此布局设置静态高度。 - bostan

0

我按照被接受的答案和其他人所说的尝试了,但对我没有起作用,但是在添加了android:ellipsize="marquee"之后,现在它可以工作了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接