ConstraintLayout优先考虑textview截断

问题描述 投票:0回答:1

我正在尝试使特定的textview在占用最大空间时自行截断。这是我的布局情况的一个例子:

|| [TextView 1] [TextView 2] [ImageView] ||

该水平链存在于具有静态宽度的单元格中。第一个TextView具有静态文本,图像视图图标具有静态大小,而第二个textview具有可变宽度。我将它们链接在一起并适当地设置约束。

我的问题是,当TextView 2变得太长时,即使ImageView的右边约束设置为父对象,它也会将ImageView推出单元格。我想要发生的是,当TextView 2变得太长时,它应该截断,将图标留在父级的边界内。有没有办法让ImageView的左边缘作为ImageView 2在ImageView到达父级结尾时必须遵守的边界?

编辑:

这是我的xml的准系统示例。我认为值得注意的是,使用include标签将下面布局的xml注入到另一个布局中。下面的xml的父级将其尺寸设置为match-parent,并且将其注入的布局将尺寸设置为静态宽度和高度。

    <TextView
        android:id="@+id/title"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Title"
        bind:layout_constraintLeft_toLeftOf="parent"
        bind:layout_constraintRight_toLeftOf="@id/info"
        bind:layout_constraintBottom_toBottomOf="parent"
        bind:layout_constraintHorizontal_chainStyle="packed"/>

    <TextView
        android:id="@+id/info"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="4dp"
        android:text="@{viewModel.info}"
        bind:layout_constraintLeft_toRightOf="@id/title"
        bind:layout_constraintRight_toLeftOf="@id/icon"
        bind:layout_constraintBottom_toBottomOf="@id/title"/>

    <ImageView
        android:id="@+id/icon"
        android:layout_width="12dp"
        android:layout_height="12dp"
        android:src="@drawable/icon"
        android:layout_marginLeft="4dp"
        bind:layout_constraintLeft_toRightOf="@id/info"
        bind:layout_constraintBottom_toBottomOf="@id/info"
        bind:layout_constraintTop_toTopOf="@id/info"
        bind:layout_constraintRight_toRightOf="parent"/>
android android-constraintlayout
1个回答
1
投票

为第二个app:layout_constrainedWidth="true"设置TextView属性。即使TextView's宽度为wrap_content,这也会强制执行约束。

如果您还希望它保持在一行内,并在达到最大宽度时在最后进行椭圆化,请添加:

android:maxLines="1"
android:ellipsize="end"
© www.soinside.com 2019 - 2024. All rights reserved.