Android 无法更改MotionLayout中TextInputLayout的可见性

Android 无法更改MotionLayout中TextInputLayout的可见性,android,visibility,android-motionlayout,Android,Visibility,Android Motionlayout,我是第一次尝试MotionLayout,在更改MotionScene中的TextInputLayouts的可见性时遇到问题 motion\u scene.xml <?xml version="1.0" encoding="utf-8"?> <MotionScene xmlns:motion="http://schemas.android.com/apk/res-auto" xmlns:android="http://schemas.android

我是第一次尝试
MotionLayout
,在更改
MotionScene
中的
TextInputLayouts
的可见性时遇到问题

motion\u scene.xml

<?xml version="1.0" encoding="utf-8"?>
<MotionScene
        xmlns:motion="http://schemas.android.com/apk/res-auto"
        xmlns:android="http://schemas.android.com/apk/res/android">

    <Transition
            motion:constraintSetStart="@id/afinstall"
            motion:constraintSetEnd="@id/signin"
            motion:duration="1000">

        <OnClick
                motion:targetId="@id/button_sign_in"
                motion:clickAction="transitionToEnd"/>

        <OnClick

        />

    </Transition>

    <Transition
            motion:constraintSetEnd="@id/afinstall"
            motion:constraintSetStart="@id/signin"
            motion:duration="1000">

        <OnClick
                motion:targetId="@id/button_back"
                motion:clickAction="transitionToEnd"/>

        <OnClick

        />

    </Transition>

    .............

    <ConstraintSet android:id="@+id/afinstall">

        ....

        <Constraint
                android:layout_width="282dp"
                android:layout_height="wrap_content"
                android:hint="Username"
                android:layout_marginEnd="8dp"
                motion:layout_constraintEnd_toEndOf="parent" android:layout_marginStart="8dp"
                motion:layout_constraintStart_toStartOf="parent" android:id="@+id/sign_in_username_tf"
                android:layout_marginTop="1dp" motion:layout_constraintTop_toBottomOf="@+id/app_slogan"
                android:visibility="gone" />
        <Constraint
                android:layout_width="282dp"
                android:layout_height="wrap_content"
                android:hint="Password"
                android:layout_marginStart="8dp"
                motion:layout_constraintStart_toStartOf="parent" android:layout_marginEnd="8dp"
                motion:layout_constraintEnd_toEndOf="parent" android:id="@+id/sign_in_password_tf"
                android:layout_marginTop="1dp" motion:layout_constraintTop_toBottomOf="@+id/sign_in_username_tf"
                android:visibility="gone"/>

         ....
    </ConstraintSet>

    <ConstraintSet android:id="@+id/signin">

    ....

    <Constraint
                android:layout_width="282dp"
                android:layout_height="wrap_content"
                android:hint="Username"
                android:layout_marginEnd="8dp"
                motion:layout_constraintEnd_toEndOf="parent" android:layout_marginStart="8dp"
                motion:layout_constraintStart_toStartOf="parent" android:id="@+id/sign_in_username_tf"
                android:layout_marginTop="110dp" motion:layout_constraintTop_toBottomOf="@+id/app_slogan"
                android:visibility="visible"/>
        <Constraint
                android:layout_width="282dp"
                android:layout_height="wrap_content"
                android:hint="Password"
                android:layout_marginTop="15dp"
                motion:layout_constraintTop_toBottomOf="@+id/sign_in_username_tf" android:layout_marginStart="8dp"
                motion:layout_constraintStart_toStartOf="parent" android:layout_marginEnd="8dp"
                motion:layout_constraintEnd_toEndOf="parent" android:id="@+id/sign_in_password_tf"
                android:visibility="visible"/>

    ....

    </ConstraintSet>

</MotionScene>

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.motion.MotionLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layoutDescription="@xml/motion_scene"
        tools:context=".MainActivity">

....

    <android.support.design.widget.TextInputLayout
            android:layout_width="282dp"
            android:layout_height="wrap_content"
            android:hint="Username"
            android:layout_marginEnd="8dp"
            app:layout_constraintEnd_toEndOf="parent" android:layout_marginStart="8dp"
            app:layout_constraintStart_toStartOf="parent" android:id="@+id/sign_in_username_tf"
            android:layout_marginTop="1dp" app:layout_constraintTop_toBottomOf="@+id/app_slogan"
            android:visibility="gone">

        <android.support.design.widget.TextInputEditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:fontFamily="@font/nunito_sans" android:textSize="20sp"
                android:textColor="@color/colorPrimaryLi"/>
    </android.support.design.widget.TextInputLayout>
    <android.support.design.widget.TextInputLayout
            android:layout_width="282dp"
            android:layout_height="wrap_content"
            android:hint="Password" app:hintEnabled="true"
            app:hintAnimationEnabled="true"
            android:layout_marginStart="8dp"
            app:layout_constraintStart_toStartOf="parent" android:layout_marginEnd="8dp"
            app:layout_constraintEnd_toEndOf="parent" android:id="@+id/sign_in_password_tf"
            android:layout_marginTop="1dp" app:layout_constraintTop_toBottomOf="@+id/sign_in_username_tf"
            android:visibility="gone">

        <android.support.design.widget.TextInputEditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:fontFamily="@font/nunito_sans" android:textSize="20sp"
                android:textColor="@color/colorPrimaryLi"/>
    </android.support.design.widget.TextInputLayout>

    ....

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

.............
....
....
....
....
活动\u main.xml

<?xml version="1.0" encoding="utf-8"?>
<MotionScene
        xmlns:motion="http://schemas.android.com/apk/res-auto"
        xmlns:android="http://schemas.android.com/apk/res/android">

    <Transition
            motion:constraintSetStart="@id/afinstall"
            motion:constraintSetEnd="@id/signin"
            motion:duration="1000">

        <OnClick
                motion:targetId="@id/button_sign_in"
                motion:clickAction="transitionToEnd"/>

        <OnClick

        />

    </Transition>

    <Transition
            motion:constraintSetEnd="@id/afinstall"
            motion:constraintSetStart="@id/signin"
            motion:duration="1000">

        <OnClick
                motion:targetId="@id/button_back"
                motion:clickAction="transitionToEnd"/>

        <OnClick

        />

    </Transition>

    .............

    <ConstraintSet android:id="@+id/afinstall">

        ....

        <Constraint
                android:layout_width="282dp"
                android:layout_height="wrap_content"
                android:hint="Username"
                android:layout_marginEnd="8dp"
                motion:layout_constraintEnd_toEndOf="parent" android:layout_marginStart="8dp"
                motion:layout_constraintStart_toStartOf="parent" android:id="@+id/sign_in_username_tf"
                android:layout_marginTop="1dp" motion:layout_constraintTop_toBottomOf="@+id/app_slogan"
                android:visibility="gone" />
        <Constraint
                android:layout_width="282dp"
                android:layout_height="wrap_content"
                android:hint="Password"
                android:layout_marginStart="8dp"
                motion:layout_constraintStart_toStartOf="parent" android:layout_marginEnd="8dp"
                motion:layout_constraintEnd_toEndOf="parent" android:id="@+id/sign_in_password_tf"
                android:layout_marginTop="1dp" motion:layout_constraintTop_toBottomOf="@+id/sign_in_username_tf"
                android:visibility="gone"/>

         ....
    </ConstraintSet>

    <ConstraintSet android:id="@+id/signin">

    ....

    <Constraint
                android:layout_width="282dp"
                android:layout_height="wrap_content"
                android:hint="Username"
                android:layout_marginEnd="8dp"
                motion:layout_constraintEnd_toEndOf="parent" android:layout_marginStart="8dp"
                motion:layout_constraintStart_toStartOf="parent" android:id="@+id/sign_in_username_tf"
                android:layout_marginTop="110dp" motion:layout_constraintTop_toBottomOf="@+id/app_slogan"
                android:visibility="visible"/>
        <Constraint
                android:layout_width="282dp"
                android:layout_height="wrap_content"
                android:hint="Password"
                android:layout_marginTop="15dp"
                motion:layout_constraintTop_toBottomOf="@+id/sign_in_username_tf" android:layout_marginStart="8dp"
                motion:layout_constraintStart_toStartOf="parent" android:layout_marginEnd="8dp"
                motion:layout_constraintEnd_toEndOf="parent" android:id="@+id/sign_in_password_tf"
                android:visibility="visible"/>

    ....

    </ConstraintSet>

</MotionScene>

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.motion.MotionLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:layoutDescription="@xml/motion_scene"
        tools:context=".MainActivity">

....

    <android.support.design.widget.TextInputLayout
            android:layout_width="282dp"
            android:layout_height="wrap_content"
            android:hint="Username"
            android:layout_marginEnd="8dp"
            app:layout_constraintEnd_toEndOf="parent" android:layout_marginStart="8dp"
            app:layout_constraintStart_toStartOf="parent" android:id="@+id/sign_in_username_tf"
            android:layout_marginTop="1dp" app:layout_constraintTop_toBottomOf="@+id/app_slogan"
            android:visibility="gone">

        <android.support.design.widget.TextInputEditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:fontFamily="@font/nunito_sans" android:textSize="20sp"
                android:textColor="@color/colorPrimaryLi"/>
    </android.support.design.widget.TextInputLayout>
    <android.support.design.widget.TextInputLayout
            android:layout_width="282dp"
            android:layout_height="wrap_content"
            android:hint="Password" app:hintEnabled="true"
            app:hintAnimationEnabled="true"
            android:layout_marginStart="8dp"
            app:layout_constraintStart_toStartOf="parent" android:layout_marginEnd="8dp"
            app:layout_constraintEnd_toEndOf="parent" android:id="@+id/sign_in_password_tf"
            android:layout_marginTop="1dp" app:layout_constraintTop_toBottomOf="@+id/sign_in_username_tf"
            android:visibility="gone">

        <android.support.design.widget.TextInputEditText
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:fontFamily="@font/nunito_sans" android:textSize="20sp"
                android:textColor="@color/colorPrimaryLi"/>
    </android.support.design.widget.TextInputLayout>

    ....

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

....
....
我试过摆弄一些东西,但我无法指出为什么会发生这种事

请不要将此标记为重复,因为这是我正在尝试的一个相当新的库。如果需要,我很乐意进一步阐述。

我发现当前(alpha 5)可见性cange不起作用(如果您在constraintset中设置它,它会起作用,但在event或keyframeset上不起作用)
作为一种解决方法,我使用alpha 0-1使视图可见或不可见,并添加incode侦听器使其可单击

您必须在
内部使用
并重新定义

而不是在约束上声明可见性,您可以尝试将可见性声明为自定义属性。因此,对于第一个约束,请尝试以下方法:

 <Constraint
            android:layout_width="282dp"
            android:layout_height="wrap_content"
            android:hint="Username"
            android:layout_marginEnd="8dp"
            motion:layout_constraintEnd_toEndOf="parent" 
            android:layout_marginStart="8dp"
            motion:layout_constraintStart_toStartOf="parent" 
            android:id="@+id/sign_in_username_tf"
            android:layout_marginTop="1dp"
            motion:layout_constraintTop_toBottomOf="@+id/app_slogan" >
    <CustomAttribute
        motion:attributeName="visibility"
        motion:customIntegerValue="8" />
</Constraint>

这个bug仍然存在于beta1中。你有报道这个问题吗?