在开发过程中,会遇到如下的产品需求,A,B两个文本控件在同一个水平方向显示,要求是在B完整显示后,把屏幕的剩余空间留给A显示,A显示不下省略号处理:
这种需求其实主要是不想把A的最大宽度写死,因为B的宽度上司不确定的,为了尽量利用屏幕,我们需要在B完整显示后把剩余的屏幕空间给A。
上面B的宽度也不能写死,但是一般B的宽度不会超过整个屏幕宽度。
一种实现方法可能需要通过代码计算A的最大宽度,然后给A设置最大宽度。
这里介绍一种不需要计算的方法:
直接通过xml布局的方式实现:
使用水平的LinearLayout,将A、B包裹,将A的宽度通过android:layout_weight="1"的方式设置,B的宽度设置为wrap_content,示例如下:
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView
android:id="@+id/A"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:ellipsize="end"
android:maxLines="1" />
<TextView
android:id="@+id/B"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>
好了,通过上面的方法,可以在不添加手动计算逻辑的情况下完成产品的需求,大功告成!