В версии ConstraintLayout ‹beta5 у меня были макеты, подобные этому примеру ниже:
<android.support.constraint.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/square_image"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintDimensionRatio="H, 1:1"/>
</android.support.constraint.ConstraintLayout>
Однако в версиях, начиная с beta5, было удалено ограничение MATCH_PARENT для дочерних представлений.
В документации приведены примеры использования app: layout_constraintDimensionRatio:
Вы также можете использовать соотношение, если оба измерения установлены на MATCH_CONSTRAINT (0dp). В этом случае система устанавливает самые большие размеры, удовлетворяет всем ограничениям и поддерживает заданное соотношение сторон. Чтобы ограничить одну конкретную сторону на основе размеров другой. Вы можете предварительно добавить W или H, чтобы ограничить ширину или высоту соответственно. Например, если одно измерение ограничено двумя целевыми значениями (например, ширина равна 0dp и центрирована по родительскому элементу), вы можете указать, какая сторона должна быть ограничена, добавив буква W (для ограничения ширины) или H (для ограничения высоты) перед соотношением, разделенная запятой:
<Button android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintDimensionRatio="H,16:9"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
Этот пример работает, когда родительский макет имеет фиксированную высоту или match_parent
, но не когда родительский макет установлен на wrap_content
.
Используя приведенный выше пример кода, если я устанавливаю ширину ImageView равной 0dp, родительский вид сворачивается, как если бы в нем нет содержимого.
Это была невероятно полезная функция, я чувствую, что мне просто чего-то не хватает в этой новой версии. Любая помощь приветствуется.