【问题标题】:Android text view wrap to max of 2 linesAndroid 文本视图换行最多 2 行
【发布时间】:2021-12-08 17:18:06
【问题描述】:

我试图让文本视图最多占用 2 行(如果只有 1 个单词/没有空格,则只有 1 行),但要尽可能窄。

例如:

中等
文字

再长一点
文字在这里

一些很长的文字可能会变得很长
宽但永远不会超过 2 行

关于如何实现这一点的任何想法?

目前,我发现的唯一方法是在我的字符串中硬编码换行符,这并不理想,并且会导致大量重复的字符串。

为澄清而添加: 包含文本视图的布局在 recylerView 中使用,所以我不能(也不想)限制宽度 - 文本视图应该增长到它需要的大小(并因此扩展它的父级,它设置为wrap_content),但要超过 2 行而不是 1 行。

换句话说,一个固定高度和可变宽度的textView,用来显示所有的内容。

扩展文本视图

好的,所以我认为我唯一的选择是创建自定义文本视图。我是新手,所以这是我计划的方法:

  • 扩展 TextView 并覆盖 onDraw();
  • 用遇到的第一个空格分割字符串
  • 测量字符串 A 和 B 的宽度
  • 获取 A 和 B 长度的最大值
  • 用遇到的第二个空格(如果存在)分割字符串
  • 获取 2 个子字符串的最大宽度
  • 将此分割的最大宽度与第一次分割的最大宽度进行比较,并保持最低
  • 对字符串中的每个空格重复此操作,以确定哪个拆分导致最小的总宽度
  • 根据这个设置TextView的宽度

这有意义吗?有更好的方法吗?

(注意,如果我使用的是固定宽度的字体,我可以使用字符串长度/2,然后从它的任一侧退出,直到我碰到一个空格,然后用换行符替换它。)

【问题讨论】:

    标签: android textview android-wrap-content


    【解决方案1】:

    android:maxLines="2" 添加到TextView

    【讨论】:

    • 但这对动态宽度没有帮助 - 它不会强制它使用两条线作为可用宽度的首选项。所有这一切都是为了防止它超过 2 行
    • 啊,不清楚这就是你要找的东西。问题本身说“最多换行 2 行”,不清楚您是否希望从示例中获得更多信息。您可以通过在约束布局中使用约束来设置最大宽度。还可以尝试添加 android:breakStrategy=2,它将换行策略设置为支持相等的行大小。
    • 我的上述建议仍然可能不会使其小于最大宽度,但如果它适合 1 行,我不确定。如果你真的需要,你可能不需要使用 textview 而是通过自定义视图来做事。
    • 对不起,也许我应该添加更多细节 - 这被用作带有标题的图标,然后此布局用于水平 recylerView。所以,我不能限制文本视图的宽度 - 它需要能够增长到需要的大小,以显示所有文本,但要在 2 行而不是 1 行上这样做。
    • @CharlieWalker 如果您希望将其布置在图标下方,则约束是将左边缘设置为图标的左边缘,将右边缘设置为图标的右边缘
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多