Android:永久提升视图

Android:永久提升视图,android,android-recyclerview,statelistdrawable,Android,Android Recyclerview,Statelistdrawable,我有一个RecyclerView,它有一个RippleEffect和一个StateListAnimator(如下所示): anim_lift.xml <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_enabled="true"

我有一个
RecyclerView
,它有一个RippleEffect和一个StateListAnimator(如下所示):

anim_lift.xml

<?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">
        <set>
            <objectAnimator
                android:duration="@android:integer/config_shortAnimTime"
                android:propertyName="translationZ"
                android:valueTo="8dp"
                android:valueType="floatType"/>
        </set>
    </item>
    <item>
        <set>
            <objectAnimator
                android:duration="@android:integer/config_shortAnimTime"
                android:propertyName="translationZ"
                android:valueTo="0"
                android:valueType="floatType"/>
        </set>
    </item>
</selector>


问题是,如何在单击使用此xml的视图时提升该视图,然后在再次单击该视图时取消提升该视图

这可以通过使用视图的选定状态来实现。如果您单击视图,您将
setSelected(true)
,然后再次单击它
setSelected(false)

然后,所选状态可以由StateListAnimator处理。您可以添加一个新项目以捕获
状态\u selected=“true”



现在,如果选择视图,则其高程将为
8dp
。如果未选中该选项,StateListAnimator将下降到StateListAnimator的默认高度
0dp

。i、 e,它将设置立面动画,然后将其禁用。我希望在初始动画之后,立面是永久的。当按下“设置一种颜色”时,您也可以使用不同的颜色,然后再次按下该颜色将更改该类型的逻辑也应用了…这不是期望的结果。结果需要是视图一旦被选中就被提升。啊,它可以工作,但不是在我需要使用它的地方。如果您在这里引用,我需要提升所选的每个项目。你回答了我的问题,我会把它改成正确的。你能进一步帮助我吗?关于该问题中项目的标高。谢谢
yourView.setOnClickListener(new View.OnClickListener() {
    public void onClick(View v) {
        v.setSelected(!v.isSelected()); // toggle selected state
    }
});
<item android:state_selected="true">
    <set>
        <objectAnimator
            android:duration="@android:integer/config_shortAnimTime"
            android:propertyName="translationZ"
            android:valueTo="8dp"
            android:valueType="floatType"/>
    </set>
</item>