0

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

例如:

短的

中等
文本

这里有一些较长
的文字

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

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

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

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

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

扩展 TextView

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

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

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

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

4

1 回答 1

0

添加android:maxLines="2"到文本视图

于 2021-10-22T01:54:13.443 回答