【问题标题】:Limit numbers of lines in TextView限制 TextView 中的行数
【发布时间】:2012-10-16 09:42:38
【问题描述】:

我有一个可滚动的 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”。对我来说,没有它们也能正常工作。
  • 你试过把 layout_width 作为 wrap_content 吗?

标签: android scroll textview lines


【解决方案1】:

您只需在 TextView 中设置多行,如下所示:

android:maxLines = "10"

您还必须添加:

android:minLines="1"

如果你不使用滚动,其余的就不需要了

还有一个属性表明这个 TextView 应该可以垂直滚动:

android:scrollbars = "vertical"

在您的 Java 代码中:

yourTextView.setMovementMethod(new ScrollingMovementMethod())

【讨论】:

  • 很抱歉,但这并没有改变任何东西。它与 textView 的字符限制有关吗?
  • 也许,只是尝试减少 maxLines,并添加大量文本。我现在没有可用的环境,所以只是随机猜测。
  • 也添加android:minLines="1"
  • 你为什么写:“[...] 你还必须加上:android:minLines="1"?Android 的文档没有说明这两个属性都必须设置并且我的应用不需要@ 987654328@set。什么情况下需要?
  • 对我没用,但在添加 android:ellipsize="marquee" 后它现在可以工作了..
【解决方案2】:

通过 id 查找您的文本视图:

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

现在使用 setMaxLines 函数并在其中分配您需要的行数,例如 20。

myTextBox.setMaxLines(20);

这会将您的文本框限制为仅显示 20 行。

【讨论】:

    【解决方案3】:

    将您的文本视图放入滚动视图并设置滚动视图的固定高度。

    <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 个字符)
    • 您可以删除它,它在您的代码中。请在此处调整 android:layout_height="120dip" > 根据需要增加或减少滚动高度。
    【解决方案4】:
    <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>
    

    【讨论】:

      【解决方案5】:

      请尝试将单行属性设置为 false。看看它是否有效。

      【讨论】:

      • 它不会改变任何东西,但即使android:singleLine="true"也不起作用
      • 不要给scrollView一个静态高度...给它包装内容,然后将textview添加到线性或相对布局..然后你可以给这个布局一个静态高度..跨度>
      【解决方案6】:

      试试这个。

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

      如果有额外的文本,它最后会添加 ...

      你也可以使用

      android:ellipsize="marquee" 
      

      它会减少末尾的多余文本。

      【讨论】:

        【解决方案7】:

        我按照接受的答案和其他人的说法进行了尝试,但没有为我工作,但在添加 android:ellipsize="marquee" 后它现在可以工作了..

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-09-07
          • 1970-01-01
          • 2012-02-27
          • 2012-10-18
          • 1970-01-01
          • 2014-11-05
          • 2011-12-12
          • 1970-01-01
          相关资源
          最近更新 更多