Constraintlayout и View Rotation не меняют размеры просмотров - PullRequest
0 голосов
/ 01 февраля 2020

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

    <androidx.constraintlayout.widget.ConstraintLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <FrameLayout
        android:id="@+id/one"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="@android:color/holo_orange_dark"
        app:layout_constraintBottom_toTopOf="@+id/two"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent">

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:rotation="90"
            android:background="@android:color/holo_green_light"/>
    </FrameLayout>

    <FrameLayout
        android:id="@+id/two"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:background="@android:color/holo_red_light"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintHorizontal_bias="0.5"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toBottomOf="@+id/one">

        <FrameLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:background="@android:color/holo_green_light" />
    </FrameLayout>
    </androidx.constraintlayout.widget.ConstraintLayout>

Screen

Не имеет значения, поверну ли я внешнюю или внутренний FrameLayout. Я не думаю, что у меня была эта проблема с LinearLayouts, может быть, ограничения запутались из-за поворота?

РЕДАКТИРОВАТЬ: Хм выглядит так же, как и при использовании Linearlayout с весом в качестве родителя, так что я, вероятно, просто здесь что-то не так.

1 Ответ

0 голосов
/ 04 февраля 2020

Свойства вида вращение , translationX и translationY все вступают в силу после макета. Я думаю, что это верно для всех групп. Другими словами, виды располагаются так, как если бы вращение не было указано. Затем после макета применяется вращение. Это то, что вы видите.

У меня нет ссылки на это, но эта проблема часто возникает при переполнении стека.

Здесь является примером это с использованием translationY . Посмотрите на раздел «разъяснения» вверху. Посмотрите, как вид снизу не перемещается, даже если он ограничен сверху вниз видом сверху? Это потому, что он расположен на виде сверху до того, как переместится на вид сверху. translationY происходит после макета, как и вращение .

Эта проблема может быть решена с помощью (возможно) небольшого кодирования. Точное решение зависит от того, что вы пытаетесь сделать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...