Android 水平布局的场景下如何实现在控件B显示完整后剩余空间全部给控件A

在开发过程中,会遇到如下的产品需求,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>


    好了,通过上面的方法,可以在不添加手动计算逻辑的情况下完成产品的需求,大功告成!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容