需求:
横向摆放控件
当数据不多的时候,靠左边显示
当左边控件的数据慢慢变多,就往右边挤
当右边的控件到达最右边的时候,固定右边不动,挤压左边的控件
解决方法:
这里到了 google
的 FlexboxLayout
: com.google.android:flexbox:xxx
layout_flexShrink
属性可以解决这个问题
layout_flexShrink 属性定义了项目的缩小比例,默认为1,即如果空间不足,该项目将缩小。
如果所有项目的 layout_flexShrink 属性都为1,当空间不足时,都将等比例缩小。
如果一个项目的flex-shrink属性为0,其他项目都为1,则空间不足时,前者不缩小。
20190607 ConstraintLayout 里面也可以
之前一直在 ConstraintLayout 里面要做这种需求要套一层 FlexboxLayout, 很是鸡肋, 各种找, 发现了解决方法
app:layout_constrainedWidth="true"
这个属性可以限制宽度在范围内, 前提是必须有左右两边的约束, 那么这个控件的宽度就会被限制在中间, 而不会超出去
同理, 对应的还有高度, 也是要上下都有约束
app:layout_constrainedHeight="true"