0

在此处输入图像描述

  • 如果 Text1 更长,则应该将所有内容推到右侧
  • 如果 Text2 更长,则应该将所有内容推向左侧
  • 否则,箭头应根据父视图居中
  • 如果任何 TextView 超出,因此整个视图超出父视图,则应修剪(椭圆)
4

1 回答 1

1

您可以使用ConstraintLayout. 创建一个打包的水平链,并在每个文本视图上使用wrap_contentplus constrainedWidth :

<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">

    <TextView
        android:id="@+id/left"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:maxLines="1"
        android:ellipsize="end"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toStartOf="@id/image"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintHorizontal_chainStyle="packed"
        app:layout_constrainedWidth="true" />

    <TextView
        android:id="@+id/right"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:maxLines="1"
        android:ellipsize="end"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toEndOf="@id/image"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constrainedWidth="true" />

    <ImageView
        android:id="@+id/image"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toEndOf="@id/left"
        app:layout_constraintEnd_toStartOf="@id/right"
        app:layout_constraintBottom_toBottomOf="parent" />

</androidx.constraintlayout.widget.ConstraintLayout>

在此处输入图像描述

在此处输入图像描述

在此处输入图像描述

如果两个文本视图都有长文本,您可以通过重新排序ConstraintLayout. 这不会改变它们的定位方式;它只会改变左侧或右侧文本是否先拉伸。

于 2022-01-11T20:12:57.180 回答