【问题标题】:How to get around the text limitations of a TextView element?如何绕过 TextView 元素的文本限制?
【发布时间】:2011-03-22 13:41:35
【问题描述】:

显然,在 ListView 中使用 TextView 元素时似乎存在文本长度限制。我不得不承认我没有检查我所面临的实际限制,但我很清楚 2k 个字符并不是什么大问题,其中 4k 个字符根本没有被显示。 而且“不显示”甚至都不正确,因为屏幕似乎可以滚动到 TextView 的整个长度(尽管我看到的只是空白)。

我的问题:我正在显示电子邮件的 ListView。邮件的所有部分都位于单独的 TextView 元素中,这些元素被放入 ListView。 当将长消息(超过 2k 个字符)放入 TextView 时,TextView 保持为空,但会占用空间。

我的问题:有什么替代方案/选项可以让这个问题消失? 例如,使整个消息可显示(甚至是长消息)。

提前感谢任何人的帮助。

【问题讨论】:

    标签: android textview


    【解决方案1】:

    你有什么理由必须使用 ListView 吗?看起来你最好在 ScrollView 中使用 LinearLayout 或 RelativeLayout,或者如果你想将其他 TextView 保留在屏幕上,可能只是将电子邮件正文放在 ScrollView 中。

    如果您想坚持使用 ListView,您可以考虑使用 String#substring(int beginIndex, int endIndex) 来省略正文并在列表视图的 onListItemClick 处理程序中启动的另一个 Activity 中显示完整的正文。您可以在 XML 布局中使用 android:ellipsize 属性(或 Java 代码中的 TextView#setEllipsize)将文本限制为单行,但这可能不是您想要的。

    【讨论】:

    • 之所以使用listView,是因为整个应用程序由使用ListViews 扁平化的信息组成。手工构建所有屏幕将非常麻烦。因此,我编写了一个非常酷的 ListAdapter 来满足我的确切需求。每行可以有几种类型的可显示信息。在这种情况下,消息只是在 TextView 中显示(包装在 LinearLayout 中)
    • 顺便说一句,我会保留你的提示,因为它可能无论如何都会发生。我在 ListView 上遇到了几个严重的缺点,你的建议可能是摆脱所有这些的最好方法:))
    【解决方案2】:

    您可以将 singleLine 属性设置为 true,这样只有在单行中可见的文本才能显示在 listview 上,或者另外将 maxline 属性设置为 1

    【讨论】:

    • 这不是一个选项。我需要按原样显示消息,无论是长消息还是短消息。
    【解决方案3】:

    您是否尝试为 xml 中的 TextView 元素设置 android:maxLength 属性

    设置过滤器new InputFilter.LengthFilter(maxlength)?

    【讨论】:

    • 这正是我目前正在做的,所以文本至少会显示出来。在代码中,我检查文本是否太长,从末尾截取一部分,以便通知用户文本太长。
    • 您使用的是哪种适配器?
    • BaseAdapter 的简单扩展:)
    • 我用 TextView 元素创建了 ListView,每个元素包含 10k 个字符。有用。安卓 2.2 HTC 欲望。行中只有 TextView 吗?
    • 很遗憾没有。这些行可以有几种不同的布局。这个特定的只是众多之一:(
    【解决方案4】:

    我找到了这个怪癖的原因!
    这是Android

    在 dziobas 指出他在 2.2 上填充了 10k 个字符字符串后,我在一个新的模拟器图像上进行了尝试。
    我最终仍将更改我的代码以不使用 ListView 并按照 Brian 的建议重新实现我自己的 ListView 类

    【讨论】:

      猜你喜欢
      • 2016-09-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-07
      • 2014-09-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多