Макет ограничений wrap_content с дочерним представлением DimensionRatio

В версии 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"/>

https://developer.android.com/reference/android/support/constraint/ConstraintLayout.html#DimensionConstraints

Этот пример работает, когда родительский макет имеет фиксированную высоту или match_parent, но не когда родительский макет установлен на wrap_content.

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

Это была невероятно полезная функция, я чувствую, что мне просто чего-то не хватает в этой новой версии. Любая помощь приветствуется.


person veritas1    schedule 20.03.2017    source источник


Ответы (1)


ConstraintLayout v1.0.2 устраняет эту проблему.

person veritas1    schedule 20.03.2017