3 个 textView 项目根据其长度换行
lines break of 3 textView items according to their length
问题有这个UI问题:
1) 我有 3 个 textViews
,我想将其保存在一个父视图中。
2) 我想在尽可能少的行中填充尽可能多的项目。
3) 只有两个项目之间有一个分隔符。
建议的算法:
获取容器的宽度获取每个项目未指定的宽度(为此我必须创建一个自定义 textView 来覆盖 onMeasure()
)。
计算并放在一边"last line remaining width"
。
如果下一个 textView 可以容纳最后一行的剩余宽度:
- 使最后一个分隔符可见
- 将其放在同一行并移至下一个 textView 项
其他:
- 新开一行
remaining width = (container's width - current
item's width)
- 使最后一个分隔符不可见
- 将当前项目放在该行中(如果需要则换行)
我有两个选择:
- 使用水平线性布局的垂直线性布局。
- 使用约束布局。
我会填写一个列表列表,并通过代码填充水平线性布局。
或者通过代码填充约束布局(不太通用,我想更难)。
有没有更简单的解决方案?
如果我没有正确理解您的要求,我相信 the FlexboxLayout library from Google 应该完全符合您的要求。
您可能会使用 FlexboxLayout
(而不是 RecyclerView
和 FlexboxLayoutManager
),但值得一提的是,该库还支持回收。
问题有这个UI问题:
1) 我有 3 个 textViews
,我想将其保存在一个父视图中。
2) 我想在尽可能少的行中填充尽可能多的项目。
3) 只有两个项目之间有一个分隔符。
建议的算法:
获取容器的宽度获取每个项目未指定的宽度(为此我必须创建一个自定义 textView 来覆盖 onMeasure()
)。
计算并放在一边"last line remaining width"
。
如果下一个 textView 可以容纳最后一行的剩余宽度:
- 使最后一个分隔符可见
- 将其放在同一行并移至下一个 textView 项
其他:
- 新开一行
remaining width = (container's width - current item's width)
- 使最后一个分隔符不可见
- 将当前项目放在该行中(如果需要则换行)
我有两个选择:
- 使用水平线性布局的垂直线性布局。
- 使用约束布局。
我会填写一个列表列表,并通过代码填充水平线性布局。
或者通过代码填充约束布局(不太通用,我想更难)。
有没有更简单的解决方案?
如果我没有正确理解您的要求,我相信 the FlexboxLayout library from Google 应该完全符合您的要求。
您可能会使用 FlexboxLayout
(而不是 RecyclerView
和 FlexboxLayoutManager
),但值得一提的是,该库还支持回收。