我试图让 textview 最多占用 2 行(如果只有 1 个单词/没有空格,则只有 1 行),但要尽可能窄。
例如:
短的
中等
文本
这里有一些较长
的文字
一些很长的文本可能会变得很
宽但永远不会超过 2 行
关于如何实现这一目标的任何想法?
目前,我发现的唯一方法是在我的字符串中硬编码换行符,这并不理想,并且会导致大量重复的字符串。
为澄清添加:包含文本视图的布局在 recylerView 中使用,所以我不能(也不想)限制宽度 - 文本视图应该增长到它需要的大小(并因此扩展它的父级,设置为 wrap_content),但要超过 2 行而不是 1 行。
换句话说,一个固定高度和可变宽度的 textView 来显示所有内容。
扩展 TextView
好的,所以我认为我唯一的选择是创建自定义文本视图。我是新手,所以这是我计划的方法:
- 扩展 TextView 并覆盖 onDraw();
- 按遇到的第一个空格分割字符串
- 测量字符串 A 和 B 的宽度
- 获取最大 A 和 B 长度
- 按遇到的第二个空格拆分字符串(如果存在)
- 获取2个子字符串的最大宽度
- 将此拆分的最大宽度与第一次拆分的最大宽度进行比较,并保持最低
- 对字符串中的每个空格重复此操作,以确定哪个拆分导致最小的整体宽度
- 基于此设置TextView的宽度
这有意义吗?有更好的方法吗?
(注意,如果我使用的是固定宽度的字体,我可以使用字符串长度/2,然后从它的任一侧退出,直到我碰到一个空格,然后用换行符替换它。)