Я получил Fragment
, в котором находится RecyclerView
в пределах MotionLayout
.На вершине представления переработчика у меня есть представление, которое разрушается и расширяется, и все это сделано в моей сцене движения.Это вызвано щелчком так же как реакцией на перетаскивание представления переработчика.Пока все это работает как задумано.
Теперь самое главное: я хотел бы полностью скрыть сворачивающиеся представления для некоторых состояний в моем приложении.Но если я устанавливаю видимость видов или изменяю их высоту, они все равно возвращаются в вид, когда я перетаскиваю представление переработчика.
Так что возможно полностью отключить MotionLayout (Блокировка ограничений), пока я не включу его снова.Отключить распознаватель перетаскивания также было бы жизнеспособным решением.
Теперь немного упрощенного XML для демонстрации ситуации.
Макет, содержащий макет движения с представлением заголовка и видом переработчика
<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.motion.MotionLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/favouritesMotionLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
app:layoutDescription="@xml/favourites_motion_scene"
android:animateLayoutChanges="true">
<ImageView
android:id="@+id/headerView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
...
/>
<android.support.v4.widget.SwipeRefreshLayout
android:id="@+id/swipeRefreshLayout"
android:layout_width="match_parent"
android:layout_height="0dp"
...
>
<pinch.nrcnext.view.scroll.NRCRecyclerView
android:id="@+id/favoritesList"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</android.support.v4.widget.SwipeRefreshLayout>
</android.support.constraint.motion.MotionLayout>
Соответствующая сцена движения:
<?xml version="1.0" encoding="utf-8"?>
<MotionScene
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:motion="http://schemas.android.com/apk/res-auto"
>
<Transition
motion:constraintSetStart="@id/expanded"
motion:constraintSetEnd="@id/collapsed"
motion:duration="300">
<OnSwipe
motion:touchAnchorId="@id/swipeRefreshLayout"
motion:touchAnchorSide="top"
motion:dragDirection="dragUp" />
</Transition>
<ConstraintSet android:id="@+id/expanded">
... Constraints for expanded header ...
</ConstraintSet>
<ConstraintSet android:id="@+id/collapsed">
... ... Constraints for collapsed header ...
</ConstraintSet>
</MotionScene>
Использование версии макета ограничения "2.0.0-alpha3"
implementation "com.android.support.constraint:constraint-layout:2.0.0-alpha3"
Итак, резюмируя: я хотел бы иметь возможность отключить макет движения, так что яЯ могу прокрутить окно повторного просмотра без расширения заголовка, пока я не скажу, что он снова будет включен.К сожалению, это не так просто, как favouritesMotionLayout.isEnabled = false
, но я так думал.