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