Как конвертировать LinearLayout с помощью padding, background и clicklistener; где каждый вид может быть GONE-D; в ConstraintLayout? - PullRequest
0 голосов
/ 12 мая 2019

Я новичок в макете ограничений, так что, возможно, я что-то упустил, но у меня возникли проблемы с рефакторингом этого простого (упрощенного минимального примера) линейного макета в макет ограничения

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="@drawable/message_background"
    android:foreground="@drawable/item_selector"
    android:orientation="vertical"
    android:padding="16dp">

    <View
        android:id="@+id/view1"
        android:layout_width="match_parent"
        android:layout_height="124dp"
        android:background="#FFAABB" />

    <View
        android:id="@+id/view2"
        android:layout_width="match_parent"
        android:layout_height="124dp"
        android:layout_marginTop="8dp"
        android:background="#FFEEAA" />

    <View
        android:id="@+id/view3"
        android:layout_width="match_parent"
        android:layout_height="124dp"
        android:layout_marginTop="8dp"
        android:background="#FFAAEE" />

</LinearLayout>

Ключ в том, что view2 или view3 могут быть недоступны, и, очевидно, мне все еще нужно заполнить нижнюю часть родительского элемента; который является автоматическим в линейном макете независимо от содержания.

До сих пор я пытался подделать родительский отступ с полями для элементов, но margin_bottom в последнем представлении не работает (возможно, потому что это не ограниченное дно, но почему это должно быть, если его родительский wrap_content height)

Также фон + слушатель щелчка ...

(И да, я знаю, что для этого случая я должен использовать линейное расположение, нет необходимости говорить, что это виртуальный пример моих проблем)

...