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
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?
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>
2 odpowiedzi
Najpierw przejść przez różne wyniki stosowania Tostartof i TOLEFTOF
Za pomocą Tostartof spowoduje to wyjście.
Za pomocą TOLEFTOF spowoduje to wyjście.
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>
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.
Podobne pytania
Nowe pytania
android-constraintlayout
Nowy typ układu dostępny w repozytorium Android Support zbudowany na bazie elastycznego systemu ograniczeń, oznaczający pozycje widoków względem siebie.