MotionLayout <KeyPosition>找不到属性“目标”

时间:2019-11-08 06:53:58

标签: android android-constraintlayout android-motionlayout

我正在使用ConstraintLayout 2.0来制作一些MotionLayout动画。我将ConstraintLayout 2.0从alpha-3更新为beta-3,现在编译时会抱怨

  

src / main / res / xml / scene.xml:11:   AAPT:错误:找不到属性目标(aka com.myapp:target)。

我在MotionLayout场景文件中没有进行任何更改。这是令人讨厌的部分:

  <MotionScene
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:motion="http://schemas.android.com/apk/res-auto"> 
...
     <Transition
        motion:constraintSetStart="@+id/start"
        motion:constraintSetEnd="@+id/end"
        motion:duration="1000">

        <KeyFrameSet>
            <KeyPosition
                motion:target="@+id/accent_background" <<-- Here
                motion:framePosition="80"
                motion:percentX="1"
                motion:percentY="1" />

我查看了MotionLayout的文档,对我来说这没有改变,但是目标仍然像这样定义。还是我错过了什么?

我确实清除了缓存并尝试进行重建,但这没有帮助。

1 个答案:

答案 0 :(得分:1)

解决了。

该属性已重命名为motionTarget。所以定义应该是

<KeyFrameSet>
   <KeyPosition
       motion:motionTarget="@+id/accent_background"
       motion:framePosition="80"
       motion:percentX="1"
       motion:percentY="1" />

Google的MotionLayout博客文章(https://medium.com/google-developers/introduction-to-motionlayout-part-i-29208674b10d)具有旧的属性名称,但文档中的属性名称已更新(https://developer.android.com/reference/android/support/constraint/motion/MotionLayout#keyposition