MotionLayout в Android не работает с несколькими переходами OnClick

У меня проблема с MotionLayout. Я создал сцену, и она работает, когда я использую один переход onClick. Но мне нужно иметь два.

Что я хочу сделать, так это: при нажатии кнопки в представлении один этот вид будет скрываться, а другой вид будет отображаться. Это работает. Но теперь, когда я нажимаю кнопку в другом представлении, я хочу показать первое представление, а второе нужно скрыть.

Этот вид работает, только проблема в том, что он не делает этого с переходом. Это просто показывает.

Моя сцена выглядит так:

<?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:constraintSetEnd = "@+id/end"
    motion:constraintSetStart = "@+id/start"
    motion:duration = "2000"
    motion:motionInterpolator = "easeOut">
    <OnClick
        motion:clickAction = "transitionToEnd"
        motion:targetId = "@+id/hide_menu" />
</Transition>

<Transition
    motion:constraintSetEnd = "@+id/end"
    motion:constraintSetStart = "@+id/start"
    motion:duration = "2000"
    motion:motionInterpolator = "easeInOut">
    <OnClick
        motion:clickAction = "transitionToStart"
        motion:targetId = "@+id/quick_menu_show_menu" />
</Transition>

<ConstraintSet android:id = "@+id/start">
    <Constraint
        android:id = "@+id/sidebar"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:translationX = "0dp"
        motion:layout_constraintBottom_toBottomOf = "parent"
        motion:layout_constraintStart_toStartOf = "parent"
        motion:layout_constraintTop_toTopOf = "parent" />

    <Constraint
        android:id = "@+id/quick_menu"
        android:layout_width = "19dp"
        android:layout_height = "wrap_content"
        android:layout_marginStart = "4dp"
        android:translationX = "-70dp"
        motion:layout_constraintBottom_toBottomOf = "parent"
        motion:layout_constraintStart_toStartOf = "parent"
        motion:layout_constraintTop_toTopOf = "parent" />
</ConstraintSet>

<ConstraintSet android:id = "@+id/end">
    <Constraint
        android:id = "@+id/sidebar"
        android:layout_width = "wrap_content"
        android:layout_height = "wrap_content"
        android:translationX = "-70dp"
        motion:layout_constraintBottom_toBottomOf = "parent"
        motion:layout_constraintStart_toStartOf = "parent"
        motion:layout_constraintTop_toTopOf = "parent" />

    <Constraint
        android:id = "@+id/quick_menu"
        android:layout_width = "19dp"
        android:layout_height = "wrap_content"
        android:layout_marginStart = "4dp"
        android:translationX = "0dp"
        motion:layout_constraintBottom_toBottomOf = "parent"
        motion:layout_constraintStart_toStartOf = "parent"
        motion:layout_constraintTop_toTopOf = "parent" />
</ConstraintSet>

</MotionScene>

надеюсь, что кто-нибудь может помочь.

С уважением,

Дж. Корстен

2
0
1 077
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

По какой-то причине это решает проблему, но я надеюсь, что кто-то может объяснить, почему это так.

<Transition
    motion:constraintSetEnd = "@+id/start"
    motion:constraintSetStart = "@+id/end"
    motion:duration = "2000"
    motion:motionInterpolator = "easeIn">
    <OnClick
        motion:clickAction = "transitionToStart"
        motion:targetId = "@+id/quick_menu_show_menu" />
</Transition>

Как я это прочитал: он делает easyIn из ConstraintSetEnd в ConstraintSetStart (transitionToStart), но мне нужно было изменить ConstraintSetEnd на @+id/start и ConstraintSetStart на @+id/end.

Другие вопросы по теме