преобразование match_parent в «0dp»

#android #android-layout #android-studio #android-constraintlayout

#Android #android-макет #android-studio #android-constraintlayout

Вопрос:

Когда я использую android:layout_height="match_parent" или android:layout_width="match_parent" в качестве высоты / ширины дочерних элементов в макете ограничений и создаю файл Gradle, он автоматически изменяется на android:layout_height="0dp" или android:layout_widtht="0dp" соответственно.

Технически существует огромная разница между 0dp и match_parent.

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

Я не знаю, почему это происходит.
Пожалуйста, направьте меня.

Комментарии:

1. «0dp» является эквивалентом «match_parent» в ConstraintLayout, подробнее читайте здесь developer.android.com/training/constraint-layout/index.html

Ответ №1:

match_parent не поддерживается в ConstraintLayout. Если вы хотите такого же поведения, используйте 0dp и установите ограничения на каждой стороне родительского элемента.

Комментарии:

1. Если match_parent не поддерживается, зачем указывать его в раскрывающемся списке layout_width и layout_height в IDE? Я не говорю, что вы не правы (потому что очевидно, что если вы работаете в Google и ваше имя постоянно появляется в ответах на вопросы ConstraintLayout, то вы, очевидно, много знаете об этом). Но я говорю, что вся текущая реализация для ConstraintLayout является беспорядочной и в настоящее время непригодной для использования.

2. Но что, если я хочу, чтобы высота или ширина моего представления были равны 0dp (с 0 в качестве значения) в ConstraintLayout? Я не могу использовать 0dp и 0px, потому что он будет действовать как match_parent.

Ответ №2:

Вы не должны использовать match_parent для любого представления в ConstraintLayout. Вместо этого используйте «ограничения соответствия» (0dp)

match_parent означает, filling whats left где как 0dp означает match constraints . В ConstraintLayout match_parent не поддерживается.

match_parent зависит от родительского элемента для его позиции (x, y amp; width / height), но 0dp может быть определено ограничением / позицией

Ответ №3:

У меня сработал способ размещения относительного элемента под другим элементом с родительским элементом, соответствующим ширине:

 <RelativeLayout
    android:layout_width="0dp"
    android:layout_height="wrap_content"
    app:layout_constraintStart_toStartOf="parent"
    app:layout_constraintTop_toBottomOf="@id/xxx"
    app:layout_constraintEnd_toEndOf="@ id/xxx"
    >