Android 文本视图换行最多 2 行

问题描述 投票:0回答:2

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

例如:


文字

再长一些
文字在此

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

关于如何实现这一目标有什么想法吗?

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

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

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

扩展TextView

好吧,所以我认为我唯一的选择是创建一个自定义文本视图。我对此很陌生,所以这是我计划的方法:

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

这有道理吗?有更好的方法吗?

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

android textview android-wrap-content
2个回答
0
投票

android:maxLines="2"
添加到 TextView


0
投票

我终于找到了一种在撰写中使用
来做到这一点的方法

modifier = Modifier.width(IntrinsicSize.Min)

与 lineLimit 结合,这要求视图绘制“尽可能窄”,这迫使文本使用 2 行

© www.soinside.com 2019 - 2024. All rights reserved.