Как получить барьеры для работы с MotionLayout - PullRequest
0 голосов
/ 07 ноября 2018

Итак, я поигрался с MotionLayout, чтобы заставить работать некоторые анимации, но у меня была проблема с барьерами при преобразовании ConstraintLayout в MotionLayout. У меня есть барьер, который ссылается на два представления заголовка в верхней части родительского макета и ViewGroup, который ограничивает верхнюю часть ViewGroup до нижней части барьера; однако, когда я конвертирую ConstraintLayout в новый MotionLayout, барьер больше не работает. Мой ViewGroup становится ограниченным к вершине родителя вместо основания барьера. Я предполагаю, что это потому, что библиотека все еще находится в альфа-версии, но я надеюсь, что у кого-то есть какое-то решение этой проблемы.

Edit:

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.motion.MotionLayout 
    usual stuff here
    app:layoutDescription="@xml/scene">

    <CustomHeaderView
        android:id="@+id/first_header"
        android:layout_width="0dp"
        android:layout_height="wrap_content"
        android:visibility="gone"
        app:attachedRecyclerView="@+id/some_recycler_view"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

    <SecondCustomHeaderView
        android:id="@+id/second_header"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:visibility="visible"
        app:attachedRecyclerView="@+id/some_recycler_view"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent"
        app:layout_constraintTop_toTopOf="parent"/>

    <android.support.constraint.Barrier
        android:id="@+id/barrier"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:barrierDirection="bottom"
        app:constraint_referenced_ids="first_header,second_header"
        tools:layout_editor_absoluteY="241dp" />

    <android.support.v4.widget.SwipeRefreshLayout
        android:id="@+id/some_swipe_container"
        android:layout_width="0dp"
        android:layout_height="0dp"
        app:layout_constraintTop_toBottomOf="@id/barrier"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintEnd_toEndOf="parent"
        app:layout_constraintStart_toStartOf="parent">

        <android.support.v4.widget.NestedScrollView
            android:id="@+id/nested_scroll_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <android.support.v7.widget.RecyclerView
                android:id="@+id/some_recycler_view"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:descendantFocusability="blocksDescendants"
                android:nestedScrollingEnabled="false" />

        </android.support.v4.widget.NestedScrollView>

    </android.support.v4.widget.SwipeRefreshLayout>


</android.support.constraint.motion.MotionLayout>

Спасибо!

...