Как я могу выровнять два текстовых представления, где у одного из них есть дополнение, используя макет ограничения? - PullRequest
0 голосов
/ 24 октября 2019

Я хотел бы получить следующий макет

enter image description here

Нижний слой TextView имеет прямоугольник с закругленными углами, который можно нарисовать в качестве фона. Я хотел бы выровнять текст внутри TextView с верхним текстом. В настоящее время происходит то, что закругленные края совпадают с текстом, а не с самим текстом. Любые идеи о том, как реализовать это с ConstraintLayout? Я попытался установить layout_constraintStart_toStartOf текст выше и установить отрицательный отступ, но я предполагаю, что ограничения имеют приоритет здесь и игнорируют заполнение.

Вот полный макет xml:

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

    <androidx.appcompat.widget.AppCompatImageView
        android:id="@+id/trip_type_icon"
        android:layout_width="24dp"
        android:layout_height="24dp"
        android:tint="@color/oslo_gray"
        app:layout_constraintBottom_toBottomOf="@+id/trip_month"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="@+id/trip_date"
        app:srcCompat="@drawable/ic_car_pickup" />

    <View
        android:id="@+id/divider"
        android:layout_width="1dp"
        android:layout_height="0dp"
        android:layout_marginStart="12dp"
        android:layout_marginTop="12dp"
        android:background="@color/oslo_gray"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/trip_type_icon" />

    <TextView
        android:id="@+id/trip_date"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:textColor="@color/shark"
        app:layout_constraintEnd_toEndOf="@+id/trip_month"
        app:layout_constraintStart_toEndOf="@+id/trip_type_icon"
        app:layout_constraintTop_toTopOf="parent"
        tools:text="5" />

    <TextView
        android:id="@+id/trip_month"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginTop="4dp"
        android:textColor="@color/emperor"
 app:layout_constraintBottom_toBottomOf="@+id/trip_timeline_subtitle"
        app:layout_constraintStart_toEndOf="@+id/trip_type_icon"
        app:layout_constraintTop_toBottomOf="@+id/trip_date"
        tools:text="Sep" />

    <TextView
        android:id="@+id/trip_timeline_title"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:textColor="@color/shark"
        app:layout_constraintEnd_toStartOf="@+id/navigate_arrow"
        app:layout_constraintStart_toEndOf="@+id/trip_date"
        app:layout_constraintTop_toTopOf="parent"
        tools:text="PVG -> PEK" />

    <TextView
        android:id="@+id/trip_timeline_subtitle"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:layout_marginStart="16dp"
        android:layout_marginBottom="48dp"
        android:textColor="@color/emperor"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="@+id/trip_timeline_title"
        app:layout_constraintStart_toEndOf="@+id/trip_date"
        app:layout_constraintTop_toBottomOf="@+id/trip_timeline_title"
        tools:text="2:10pm - 4:45pm" />

    <androidx.appcompat.widget.AppCompatImageView
        android:id="@+id/navigate_arrow"
        android:layout_width="20dp"
        android:layout_height="20dp"
        android:layout_marginStart="24dp"
        app:layout_constraintBottom_toBottomOf="@+id/trip_timeline_subtitle"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toEndOf="@+id/trip_timeline_title"
        app:layout_constraintTop_toTopOf="@+id/trip_timeline_title"
        app:srcCompat="@drawable/ic_arrow_right_vector" />

    <TextView
        android:id="@+id/trip_timeline_flight_layover"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:background="@drawable/rounded_rectangle_radius_12dp"
        android:textColor="@color/emperor"
        android:visibility="gone"
        app:layout_constraintEnd_toEndOf="@id/navigate_arrow"
        app:layout_constraintStart_toStartOf="@+id/trip_timeline_subtitle"
        app:layout_constraintTop_toBottomOf="@id/trip_timeline_subtitle"
        tools:background="@drawable/rounded_rectangle_radius_12dp"
        tools:text="2h 25m Layover at PEK"
        tools:visibility="visible" />

</androidx.constraintlayout.widget.ConstraintLayout>

Рисуем округленный прямоугольникrounded_rectangle_radius_12dp:

<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle"
    android:tint="@color/porcelain">
    <corners android:radius="12dp" />
    <padding android:left="12dp"
        android:right="12dp"
        android:top="2dp"
        android:bottom="2dp"/>
</shape>

1 Ответ

0 голосов
/ 25 октября 2019

Я бы определил отступ внутри вашего trip_timeline_flight_layover TextView вместо вашего рисования:

    <TextView
        android:id="@+id/trip_timeline_flight_layover"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:paddingTop="2dp"
        android:paddingBottom="2dp"
        android:paddingStart="12dp"
        android:paddingEnd="12dp"
        android:background="@drawable/rounded_rectangle_radius_12dp"
        android:textColor="@color/emperor"
        android:visibility="gone"
        app:layout_constraintEnd_toEndOf="@id/navigate_arrow"
        app:layout_constraintStart_toStartOf="@+id/trip_timeline_subtitle"
        app:layout_constraintTop_toBottomOf="@id/trip_timeline_subtitle"
        tools:background="@drawable/rounded_rectangle_radius_12dp"
        tools:text="2h 25m Layover at PEK"
        tools:visibility="visible" />

А затем установите layout_marginStart из trip_timeline_title равным заполнению вашего layover``TextView, вв этом случае, 12dp.

РЕДАКТИРОВАТЬ:

Я на самом деле не думаю, что вы должны определять отступы внутри вашего TextView, просто делая поле вашего заголовкаравный боковой отступ должен работать.

...