android constraintlayout, как выровнять текстовое представление по левому краю, но оно должно показывать многоточие, когда оно слишком длинное - PullRequest
0 голосов
/ 18 марта 2020

Выравнивание нескольких окон по горизонтали по левому краю, но только по правому краю - по правому краю окна.

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


1 Ответ

1 голос
/ 18 марта 2020

Вы перепутали начало / конец и влево / вправо в вашей горизонтальной цепочке.

Для id/content_message_time измените:

app:layout_constraintEnd_toStartOf="@+id/content_logo"

на

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"

на

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

, что должно привести к тому же поведению.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...