项目中遇到一种UI效果,如下图:
- 控件1是一个ImageView位置固定;
- 控件2是一个TextView,单行显示內容可变,可长可短;
- 控件3是一个TextView内容固定,但是需要紧邻着控件2根据控件2的内容长度变化而变化。但不能超出屏幕右侧
控件2要实現单行并且超长要显示省略号,前提必须是控件的宽度固定宽度固定为两种,一种是直接写死控件的宽度另一种就是填充剩余空间宽喥。因为这里控件2在控件1和控件3的中间显然只能用第二种填充剩余空间宽度。这种方式用的比较多的就是线性布局设置控件2的layout_weight
属性。控件1和控件3使用自适应内容的宽度属性代码如下:
有效果图可知,中间控件实现了单行显示的效果但是控件3的位置就固定在屏幕右侧。
那么控件1、2、3作为3个兄弟控件布局是怎么都不能满足这种布局需求的就得考虑将内容宽度和位置会发生变化的控件2和3合并装入一个新嘚容器中,因为总体是自适应内容的则做如下布局:
在内容较短的时候,控件2和控件3的位置都很正常但当内容过长的时候就会把控件3擠没了,那么怎么才能保住控件3的位置那么就必须给控件2设置layout_weight
属性,如下:
但需要注意的是:控件2的layout_width
必须设置为wrap_content
设置为0dp列表复用的时候会有问题的(别问我是怎么知道的,问了我也不告诉你)