【发布时间】: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