Android ConstraintLayout layout_constrainedWidth使用

问题

有个需求,在一行中显示收件人姓名和电话,分别显示在行的两端,如下图所示

布局代码如下

XML 复制代码
        <TextView
            android:id="@+id/contact"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:clickable="false"
            android:ellipsize="end"
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:maxLines="1"
            android:text='收货人:李想'
            android:textColor="@color/black1"
            android:textSize="14dp"
            app:layout_constraintBottom_toTopOf="@id/address"
            app:layout_constraintStart_toEndOf="@id/tv_first"
            app:layout_constraintEnd_toStartOf="@id/phone"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintHorizontal_chainStyle="spread_inside"/>
        <TextView
            android:id="@+id/phone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="10dp"
            android:clickable="false"
            android:ellipsize="end"
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:maxLines="1"
            android:text="16600000000"
            android:textColor="@color/black1"
            android:textSize="14dp"
            app:layout_constraintTop_toTopOf="@id/contact"
            app:layout_constraintBottom_toBottomOf="@id/contact"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toEndOf="@id/contact"
            app:layout_constraintHorizontal_chainStyle="spread_inside"/>

在联系人长度比较短的情况下,可以正常显示,但是当联系人内容太长的情况,整行的内容会超出两端,连左右的margin都不生效了,如下图所示

解决方案

只需添加app:layout_constrainedWidth="true"即可,如下代码所示

XML 复制代码
        <TextView
            android:id="@+id/contact"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:clickable="false"
            android:ellipsize="end"
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:maxLines="1"
            android:text='收货人:理想很丰满现实很骨感理想很美好现实很残酷'
            android:textColor="@color/black1"
            android:textSize="14dp"
            app:layout_constraintBottom_toTopOf="@id/address"
            app:layout_constraintStart_toEndOf="@id/tv_first"
            app:layout_constraintEnd_toStartOf="@id/phone"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintHorizontal_chainStyle="spread_inside"
            app:layout_constrainedWidth="true"/>
        <TextView
            android:id="@+id/phone"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginRight="10dp"
            android:clickable="false"
            android:ellipsize="end"
            android:focusable="false"
            android:focusableInTouchMode="false"
            android:maxLines="1"
            android:text="16600000000"
            android:textColor="@color/black1"
            android:textSize="14dp"
            app:layout_constraintTop_toTopOf="@id/contact"
            app:layout_constraintBottom_toBottomOf="@id/contact"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toEndOf="@id/contact"
            app:layout_constraintHorizontal_chainStyle="spread_inside"
            app:layout_constrainedWidth="true"/>

效果如下

由于设置了android:ellipsize="end",所以超出的部分会显示省略号...

相关推荐
沐怡旸2 小时前
【底层机制】【Android】深入理解UI体系与绘制机制
android·面试
啊森要自信2 小时前
【GUI自动化测试】YAML 配置文件应用:从语法解析到 Python 读写
android·python·缓存·pytest·pip·dash
下位子4 小时前
『AI 编程』用 Codex 开发识字小帮手应用
android·openai·ai编程
Zender Han4 小时前
Flutter 实现人脸检测 — 使用 google_mlkit_face_detection
android·flutter·ios
君逸臣劳4 小时前
玩Android Flutter版本,通过项目了解Flutter项目快速搭建开发
android·flutter
叫我龙翔5 小时前
【MySQL】从零开始了解数据库开发 --- 基本查询
android·mysql·数据库开发
2501_916008895 小时前
iOS 26 性能分析深度指南 包含帧率、渲染、资源瓶颈与 KeyMob 协助策略
android·macos·ios·小程序·uni-app·cocoa·iphone
撩得Android一次心动7 小时前
Android adb 基础使用指南
android·adb
为java加瓦7 小时前
PHP MQTT 订阅服务:实时消息接收与数据库存储解决方案
android
怿星科技7 小时前
Android MVVM架构解析:现代开发的首选模式
android·架构