效果预期
项目中遇到一种UI效果,如下图:
- 控件1是一个ImageView,位置固定;
- 控件2是一个TextView,单行显示,内容可变,可长可短;
- 控件3是一个TextView,内容固定,但是需要紧邻着控件2,根据控件2的内容长度变化而变化。但不能超出屏幕右侧。
实现思路
控件2要实现单行并且超长要显示省略号,前提必须是控件的宽度固定。宽度固定为两种,一种是直接写死控件的宽度,另一种就是填充剩余空间宽度。因为这里控件2在控件1和控件3的中间,显然只能用第二种填充剩余空间宽度。这种方式用的比较多的就是线性布局,设置控件2的layout_weight
属性。控件1和控件3使用自适应内容的宽度属性,代码如下:
<!--中间控件占用全部空间-->
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:gravity="center_vertical"
android:layout_margin="10dp">
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@mipmap/icon_cat"/>
<TextView
android:layout_marginStart="10dp"
android:layout_marginEnd="10dp"
android:layout_weight="1"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:text="我会占用中间的全部控件"
android:textSize