无法为新的MotionLayout声明MotionScene

时间:2018-07-24 14:44:48

标签: android xml

我想尝试新的MotionLayot。 但是我无法加载MotionScreen。

我已将此依赖项添加到gradle中:

    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:2.0.0-alpha1'
    implementation 'com.android.support:design:27.1.1'

并能够在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:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <ImageView
        android:id="@+id/movingCircle"
        android:src="@drawable/ic_circle"
        android:layout_width="40dp"
        android:layout_height="40dp" />

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

但是当我尝试在xml文件夹中添加新场景时,它不会弹出,也无法单击到源。

<?xml version="1.0" encoding="utf-8"?>
<MotionScene //does not popup as a hint. Seems like 
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:motion="http://schemas.android.com/apk/res-auto">

</MotionScene>

我做错了什么?谢谢。

2 个答案:

答案 0 :(得分:2)

检查您的gradle.properties文件并删除此行

android.useAndroidX=true
android.enableJetifier=true

因为constraint-layout:2.0.0仅适用于经典支持包

答案 1 :(得分:1)

我注意到类似的行为。当前,似乎自动补全和编译/错误检查不适用于MotionScenes。最终要经过大量的反复试验,但是我期望beta1版本会带来同样的结果。

不确定您是否要将其算作“答案”,但我只是将我想要的属性(约束等)写入布局文件中,然后将其复制过来。对于TransitionOnClick / OnSwipe之类的东西,您有点自己。

在进一步发展之前,我只是保持MotionLayout docs处于打开状态(并且由于处于beta1中,它们实际上做得很好)。

您还需要使用layoutDescription属性将MotionScene添加到MotionLayout