android - ConstraintLayout 2 TextView 第一个椭圆大小
问题描述
更新
我通过以下方式实现了这种行为:
txt全名
android:layout_width="0dp"
app:layout_constraintWidth_default="wrap"
btnFollow 和 btnUnfollow
android:layout_width="0dp"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintWidth_default="wrap"
app:layout_constraintWidth_min="wrap"
原始问题
我有一个XML
布局,它是父布局ConstraintLayout
和内部
-- txtFullName -- (btnFollow | btnUnfollow ) --
Avatar ----------------------------------------------- btnPrimaryAction
-- txtTitle -----------------------------------
我要这个:
但是我用我的xml得到了这个
当txtFullName
是长时,它是重叠的btnFollow
,或者btnUnfollow
这些按钮没有显示在屏幕上。当它很长时,我想txtFullName
成为椭圆形。我尝试使用ConstraintLayout
's Flow,但效果也不太好。
我的布局约束如下所示。
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/imgAvatar"
android:layout_width="56dp"
android:layout_height="56dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@tools:sample/avatars" />
<TextView
android:id="@+id/txtFullName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="2dp"
android:ellipsize="end"
android:maxLines="1"
android:textColor="?attr/textColorMarineBlue"
app:layout_constraintEnd_toStartOf="@id/textButtonBarrierStart"
app:layout_constraintStart_toEndOf="@id/imgAvatar"
app:layout_constraintTop_toTopOf="parent"
tools:text="Long Full Name is overlapping btnFollow" />
<TextView
android:id="@+id/btnFollow"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="2dp"
android:layout_marginEnd="8dp"
android:maxLines="1"
android:text="Follow"
android:textColor="?attr/textColorAzure"
app:layout_constraintBaseline_toBaselineOf="@id/txtFullName"
app:layout_constraintEnd_toStartOf="@id/btnPrimaryAction"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@id/txtFullName" />
<TextView
android:id="@+id/btnUnfollow"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="2dp"
android:layout_marginEnd="8dp"
android:maxLines="1"
android:text="Unfollow"
android:textColor="?attr/textColorGreyishBrown"
android:visibility="gone"
app:layout_constraintBaseline_toBaselineOf="@id/txtFullName"
app:layout_constraintEnd_toStartOf="@id/btnPrimaryAction"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toEndOf="@id/txtFullName" />
<androidx.constraintlayout.widget.Barrier
android:id="@+id/textButtonBarrierStart"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="start"
app:constraint_referenced_ids="btnFollow,btnUnfollow" />
<TextView
android:id="@+id/txtTitle"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginHorizontal="8dp"
android:ellipsize="end"
android:maxLines="1"
android:textColor="?attr/textColorGreyishBrown"
app:layout_constraintEnd_toStartOf="@id/btnPrimaryAction"
app:layout_constraintStart_toEndOf="@id/imgAvatar"
app:layout_constraintTop_toBottomOf="@id/txtFullName"
tools:text="Title" />
<androidx.constraintlayout.widget.Barrier
android:id="@+id/secondColumnEndBarrier"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:barrierDirection="end"
app:constraint_referenced_ids="btnFollow,btnUnfollow,txtTitle" />
<com.google.android.material.button.MaterialButton
android:id="@+id/btnPrimaryAction"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toEndOf="@id/secondColumnEndBarrier"
app:layout_constraintTop_toTopOf="parent"
tools:text="Action" />
</androidx.constraintlayout.widget.ConstraintLayout>
我怎样才能实现这个用户界面?
解决方案
正如其他答案中所建议的,您可以在您的中设置layout_width
为,也可以0dp
在您的txtFullName
中添加以下标志txtFullName
app:layout_constrainedWidth="true"
如下
<TextView
android:id="@+id/txtFullName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginEnd="2dp"
android:ellipsize="end"
android:maxLines="1"
app:layout_constrainedWidth="true"
android:textColor="?attr/textColorMarineBlue"
app:layout_constraintEnd_toStartOf="@id/textButtonBarrierStart"
app:layout_constraintStart_toEndOf="@id/imgAvatar"
app:layout_constraintTop_toTopOf="parent"
tools:text="Long Full Name is overlapping btnFollow" />
推荐阅读
- html - 删除列之间的空白水平空间(Reactstrap、Bootrap、React)
- javascript - puppeteer userdatadir 浏览器崩溃
- javascript - 循环并检查对象 TS/JS 的类型
- kodi - 如何在根上为 Kodi 挂载磁盘
- elasticsearch - logstash 文件插件无响应
- android - 我的导航栏没有在 Android Studio Kotlin 中的片段之间切换
- mysql - 插入后触发更新表
- python - 更高效、更简洁的赋值方式
- python - 如何在元组中使用 colorama?
- python - Django-admin 属性错误: