Próbując użyć ograniczającego się, ale mając problem z prawidłowym pokazaniem elipsy.

Ma trzy kolumny, lewą ikonę; środkowa część (która ma dwie linie); prawa ikona;

Lewej ikony powinna pozostawić wyrównować rodzic, a prawa ikona powinna słuszna wyrównać rodzic, środkowa część powinna pozostawić wyrównać lewą ikonę.

| [left icon] | [first line][B]       | [right icon] |
|             | [second line][other]  |              |

Środkowa część "Pierwsza linia ......" Kiedy tekst jest zbyt długi, powinien pokazać elipsis, a "druga linia ..." Kiedy tekst jest zbyt długi, powinien również pokazać elipsis

enter image description here

Ale kiedy tekst jest zbyt długi, pierwsza linia biegnie nad ikoną prawej strony, a druga linia pokazuje elipsis, ale całą linię biegnie nad prawą ikonę, chociaż mają

app:layout_constraintRight_toLeftOf="@+id/_logo"

Aby być umieszczony po lewej stronie prawej ikony ("@ + ID / _Logo")

Dlaczego kod nie ma robić, czy coś nie ma racji?

enter image description here

XML:

<?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"
    android:layout_marginTop="0dp"
    android:layout_marginBottom="20dp"
    android:background="?android:attr/selectableItemBackground"
    android:paddingStart="20dp"
    android:paddingEnd="20dp"

    tools:background="#00880088"
    >

    <View android:id="@+id/top_divider"
        android:layout_width="wrap_content"
        android:layout_height="1dp"
        android:layout_marginBottom="20dp"
        android:background="#888"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"/>

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/_top_horizontal_guideline"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintTop_toTopOf="@+id/top_divider"
        app:layout_constraintGuide_begin="@dimen/social_content_padding" />

    <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="36dp" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/_top_horizontal_guideline_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintTop_toTopOf="@+id/top_divider"
        app:layout_constraintGuide_begin="52dp" />


    <ImageView
        android:id="@+id/_avatar"
        android:layout_width="@dimen/social_avatar_size"
        android:layout_height="@dimen/social_avatar_size"
        android:layout_marginStart="0dp"
        android:scaleType="fitXY"
        android:src="@drawable/ic_share_blue"
        app:layout_constraintEnd_toStartOf="@+id/_guideline"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintTop_toTopOf="@+id/_top_horizontal_guideline"

        tools:background="#ff0000"
        />


    <TextView
        android:id="@+id/_first_line"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:clickable="true"
        android:ellipsize="end"
        android:maxLines="1"
        android:textSize="14sp"
        app:layout_constraintTop_toTopOf="@+id/_top_horizontal_guideline"
        app:layout_constraintStart_toEndOf="@+id/_guideline"
        app:layout_constraintRight_toLeftOf="@+id/_check_icon"
        tools:text="First line, more text, asdfsdfa eee 888 eee 888 " />

    <ImageView
        android:id="@+id/_check_icon"
        android:layout_width="14dp"
        android:layout_height="14dp"
        android:layout_marginLeft="3dp"
        android:layout_marginTop="3dp"
        android:layout_marginRight="3dp"
        app:layout_constraintBottom_toBottomOf="@+id/_first_line"
        app:layout_constraintLeft_toRightOf="@id/_first_line"
        app:layout_constraintRight_toLeftOf="@+id/_logo"
        app:layout_constraintTop_toTopOf="@+id/_first_line"
        app:srcCompat="@drawable/ic_pause"
        tools:background="#ff0000"
        />

    <TextView
        android:id="@+id/_second_line"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:ellipsize="end"
        android:maxWidth="220dp"
        android:maxLines="1"
        android:textSize="12sp"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintHorizontal_chainStyle="packed"
        app:layout_constraintLeft_toRightOf="@+id/_guideline"
        app:layout_constraintRight_toLeftOf="@+id/_msg_time"
        app:layout_constraintTop_toBottomOf="@+id/_first_line"
        app:layout_constraintBottom_toTopOf="@+id/_top_horizontal_guideline_2"
        tools:text="Second line, test long text more more more eee 888 ===" />

    <TextView
        android:id="@+id/_msg_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="3dp"
        android:layout_marginRight="3dp"
        android:textSize="12sp"
        app:layout_constraintBottom_toBottomOf="@+id/_second_line"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintLeft_toRightOf="@id/_second_line"
        app:layout_constraintRight_toLeftOf="@+id/_logo"
        app:layout_constraintTop_toTopOf="@+id/_second_line"
        tools:text="  \u2039 30 Nov 2018 \u203A" />

    <ImageView
        android:id="@+id/_logo"
        android:layout_width="@dimen/social_logo_size"
        android:layout_height="@dimen/social_logo_size"
        android:layout_marginLeft="3dp"
        android:layout_marginTop="2dp"
        android:layout_marginRight="0dp"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintLeft_toRightOf="@id/_check_icon"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="@+id/_top_horizontal_guideline"
        app:layout_constraintBottom_toTopOf="@+id/_top_horizontal_guideline_2"

        tools:background="#33ff00ff"
        app:srcCompat="@drawable/ic_rotate" />


    <TextView
        android:id="@+id/_content"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="28dp"
        android:layout_marginEnd="8dp"
        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="20dp"

        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>


0
lannyf 22 marzec 2020, 01:43

2 odpowiedzi

Najlepsza odpowiedź

Najpierw przejść przez różne wyniki stosowania Tostartof i TOLEFTOF

Za pomocą Tostartof spowoduje to wyjście.

enter image description here

Za pomocą TOLEFTOF spowoduje to wyjście.

enter image description here

Jak widać, używając TOLEFTOF naciśnij widok daty z ekranu w przypadku dużego tekstu.

Podczas gdy Tostartof nie zmieni położenia zdarzenia daty bez względu na to, jak duży jest tekst lub mały tekst.

Mam nadzieję, że dostałeś punkt.

Oto wymagany układ za pomocą Tostartof .

 <?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"
    android:layout_marginTop="0dp"
    android:layout_marginBottom="20dp"
    android:background="?android:attr/selectableItemBackground"
    android:paddingStart="20dp"
    android:paddingEnd="20dp"

    tools:background="#00880088"
    >

    <View android:id="@+id/top_divider"
        android:layout_width="wrap_content"
        android:layout_height="1dp"
        android:layout_marginBottom="20dp"
        android:background="#888"
        app:layout_constraintTop_toTopOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintEnd_toEndOf="parent"/>

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/_top_horizontal_guideline"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintTop_toTopOf="@+id/top_divider"
        app:layout_constraintGuide_begin="@dimen/social_content_padding" />

    <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="36dp" />

    <androidx.constraintlayout.widget.Guideline
        android:id="@+id/_top_horizontal_guideline_2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        app:layout_constraintTop_toTopOf="@+id/top_divider"
        app:layout_constraintGuide_begin="52dp" />


    <ImageView
        android:id="@+id/_avatar"
        android:layout_width="@dimen/social_avatar_size"
        android:layout_height="@dimen/social_avatar_size"
        android:layout_marginStart="0dp"
        android:scaleType="fitXY"
        android:src="@drawable/ic_launcher_foreground"
        app:layout_constraintEnd_toStartOf="@+id/_guideline"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintTop_toTopOf="@+id/_top_horizontal_guideline"

        tools:background="#ff0000"
        />


    <TextView
        android:id="@+id/_first_line"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:clickable="true"
        android:ellipsize="end"
        android:maxLines="1"
        android:textSize="14sp"
        app:layout_constraintHorizontal_chainStyle="packed"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintTop_toTopOf="@+id/_top_horizontal_guideline"
        app:layout_constraintStart_toStartOf="@+id/_guideline"
        app:layout_constraintEnd_toStartOf="@+id/_check_icon"
        app:layout_constraintWidth_default="wrap"
        tools:text="first" />

    <ImageView
        android:id="@+id/_check_icon"
        android:layout_width="14dp"
        android:layout_height="14dp"
        android:layout_marginLeft="3dp"
        android:layout_marginTop="3dp"
        android:layout_marginRight="3dp"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintBottom_toBottomOf="@+id/_first_line"
        app:layout_constraintLeft_toRightOf="@id/_first_line"
        app:layout_constraintRight_toLeftOf="@+id/_logo"
        app:layout_constraintTop_toTopOf="@+id/_first_line"
        app:srcCompat="@drawable/ic_launcher_foreground"
        tools:background="#ff0000"
        />

    <TextView
        android:id="@+id/_second_line"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginLeft="8dp"
        android:ellipsize="end"
        android:maxLines="1"
        android:textSize="12sp"
        app:layout_constraintWidth_default="wrap"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintHorizontal_chainStyle="packed"
        app:layout_constraintStart_toStartOf="@+id/_guideline"
        app:layout_constraintEnd_toStartOf="@+id/_msg_time"
        app:layout_constraintTop_toBottomOf="@+id/_first_line"
        app:layout_constraintBottom_toTopOf="@+id/_top_horizontal_guideline_2"
        tools:text="second" />

    <TextView
        android:id="@+id/_msg_time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginLeft="3dp"
        android:layout_marginRight="3dp"
        android:textSize="12sp"
        app:layout_constraintBottom_toBottomOf="@+id/_second_line"
        app:layout_constraintHorizontal_bias="0.0"
        app:layout_constraintLeft_toRightOf="@id/_second_line"
        app:layout_constraintRight_toLeftOf="@+id/_logo"
        app:layout_constraintTop_toTopOf="@+id/_second_line"
        tools:text="  \u2039 30 Nov 2018 \u203A" />

    <ImageView
        android:id="@+id/_logo"
        android:layout_width="@dimen/social_logo_size"
        android:layout_height="@dimen/social_logo_size"
        android:layout_marginLeft="3dp"
        android:layout_marginTop="2dp"
        android:layout_marginRight="0dp"
        app:layout_constraintHorizontal_bias="1.0"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="@+id/_top_horizontal_guideline"
        app:layout_constraintBottom_toTopOf="@+id/_top_horizontal_guideline_2"

        tools:background="#33ff00ff"
        app:srcCompat="@drawable/ic_launcher_foreground" />


    <TextView
        android:id="@+id/_content"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="8dp"
        android:layout_marginTop="28dp"
        android:layout_marginEnd="8dp"
        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/_top_horizontal_guideline_2"

        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
Usman Zafer 30 marzec 2020, 09:24

Dla pierwszej linii (id/_first_line) mieszano w lewo / w prawo i ograniczenia początku / końcowe razem. Oba końce wymiaru powinny używać tej samej pary do dopasowania_consterns (0DP) do pracy. Zmień app:layout_constraintStart_toEndOf="@+id/_guideline" do app:layout_constraintLeft_toRightOf="@+id/_guideline".

Dla drugiej linii (id/_second_line), musisz dodać app:layout_constrainedWidth="true", dzięki czemu ograniczenia tego widoku są egzekwowane, gdy rośnie zbyt duża.

0
Pawel Laskowski 22 marzec 2020, 10:14