android约束布局,如何左对齐文本视图,但是当它太长时应该显示省略号

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

具有一些水平向左对齐的视图,但只有最右边的一个视图与窗口右对齐。

| [a] [b] [c] ---------- [d] |

[[b]包含很多文字时,应显示省略号

| [a] [b bbb ...] [c] [d] |

使其纵向运作enter image description here

但是在横向中不起作用,[c]不在左侧对齐,而是在右侧对齐

[a] [b] ------------------------------ [c] [d],

如何使[c]始终保持对齐,下面附有测试代码?

enter image description here

<?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:id="@+id/container"
    android:layout_width="match_parent"
    android:layout_height="wrap_content">

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/_guideline"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        app:layout_constraintGuide_begin="56dp" />


    <TextView
        android:id="@+id/topline_title"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="10dp"
        android:ellipsize="end"
        android:maxLines="1"
        android:visibility="visible"
        app:layout_constraintEnd_toStartOf="@+id/content_logo"
        app:layout_constraintStart_toStartOf="@+id/_guideline"
        app:layout_constraintTop_toTopOf="parent"
        tools:text="wer we rwe r wer eee 888 eee 888 eee eee eee eee  888" />

    <ImageView
        android:id="@+id/content_logo"
        android:layout_width="36dp"
        android:layout_height="36dp"
        android:layout_margin="8dp"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent"
        app:srcCompat="@mipmap/ic_launcher" />

    <ImageView
        android:id="@+id/content_avatar"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_marginStart="8dp"
        android:scaleType="fitXY"
        android:src="@drawable/unknown_avatar"
        app:layout_constraintEnd_toStartOf="@+id/_guideline"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/topline_title" />
    <!-- -->

    <TextView
        android:id="@+id/content_user_name"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:layout_marginTop="8dp"
        android:ellipsize="end"
        android:maxWidth="220dp"
        android:maxLines="1"
        android:textSize="16sp"
        android:textStyle="bold"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintHorizontal_chainStyle="packed"
        app:layout_constraintLeft_toLeftOf="@+id/_guideline"
        app:layout_constraintRight_toLeftOf="@+id/content_user_id_verified"
        app:layout_constraintTop_toBottomOf="@+id/topline_title"
        tools:text="test eee 888" />

    <ImageView
        android:id="@+id/content_user_id_verified"
        android:layout_width="24dp"
        android:layout_height="24dp"
        android:layout_margin="8dp"
        app:layout_constraintBottom_toBottomOf="@+id/content_user_name"
        app:layout_constraintLeft_toRightOf="@id/content_user_name"
        app:layout_constraintRight_toLeftOf="@id/content_user_id"
        app:layout_constraintTop_toTopOf="@+id/content_user_name"
        app:srcCompat="@drawable/ic_btn_play"
        />

    <TextView
        android:id="@+id/content_user_id"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        android:clickable="true"
        android:ellipsize="end"
        android:maxLines="1"
        app:layout_constraintBottom_toBottomOf="@+id/content_user_name"
        app:layout_constraintLeft_toRightOf="@id/content_user_id_verified"
        app:layout_constraintRight_toLeftOf="@id/content_message_time"
        app:layout_constraintTop_toTopOf="@+id/content_user_name"
        app:layout_constraintWidth_default="wrap"
        tools:text="eee888 qwerqwe rqw er q we rq weerw erwe" />

    <TextView
        android:id="@+id/content_message_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_margin="8dp"
        app:layout_constraintBottom_toBottomOf="@+id/content_user_id"
        app:layout_constraintLeft_toRightOf="@id/content_user_id"
        app:layout_constraintEnd_toStartOf="@+id/content_logo"
        app:layout_constraintTop_toTopOf="@+id/content_user_id"

        tools:text="30 Nov 2018" />

    <TextView
        android:id="@+id/content_text"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_margin="20dp"
        android:clickable="true"
        android:lineSpacingMultiplier="1.1"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintStart_toStartOf="@+id/_guideline"
        app:layout_constraintTop_toBottomOf="@+id/content_user_name"

        android:text="Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat." />


</androidx.constraintlayout.widget.ConstraintLayout>


android-constraintlayout
1个回答
0
投票

您在水平链中混合了开始/结束和左/右。

对于id/content_message_time更改:

app:layout_constraintEnd_toStartOf="@+id/content_logo"

to

app:layout_constraintRight_toLeftOf="@+id/content_logo"

作为旁注,app:layout_constraintWidth_default="wrap"已过时。对于您的id/content_user_id,建议您更改:

android:layout_width="0dp"
app:layout_constraintWidth_default="wrap"

to

android:layout_width="wrap_content"
app:layout_constrainedWidth="true"

应该产生相同的行为。

© www.soinside.com 2019 - 2024. All rights reserved.