我想将高程动画添加到我的android.support.v7.widget.CardView
,就像素材样式Button
一样。我试图设置StateListAnimator
:
android:stateListAnimator="@anim/selector_raise"
指向res/anim
中的选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true" android:state_pressed="true">
<objectAnimator android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ" android:valueTo="@dimen/touch_raise"
android:valueType="floatType" />
</item>
<item>
<objectAnimator android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ" android:valueTo="0dp"
android:valueType="floatType" />
</item>
</selector>
但是Android Studio给了我错误:
必须声明元素选择器
这样做的正确方法是什么?
答案 0 :(得分:3)
我已经尝试了你的代码,也许你只需将状态添加到第二个选择器元素。
所以改变这一行
<item>
用这个
<item android:state_enabled="true" android:state_pressed="false">
完整的代码将是
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_enabled="true" android:state_pressed="true">
<objectAnimator android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ" android:valueTo="@dimen/touch_raise"
android:valueType="floatType" />
</item>
<item android:state_enabled="true" android:state_pressed="false">
<objectAnimator android:duration="@android:integer/config_shortAnimTime"
android:propertyName="translationZ" android:valueTo="0dp"
android:valueType="floatType" />
</item>
</selector>
答案 1 :(得分:3)