我有一个布局,其中包括另一个布局:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="match_parent"
          android:layout_height="wrap_content"
          android:orientation="vertical"
          android:id="@+id/layout1">

    <include layout="@layout/my_layout"/>
</LinearLayout>

我需要在包含的布局中添加一个RippleEffect和一个StateListAnimator。
例子:
<include layout="@layout/my_layout"
          android:stateListAnimator="@anim/lift_up"
          android:background="@drawable/ripple_effect"/>

Rippleeffect和StateListAnimator都能100%工作。我无法更改包含的布局。因此,我需要对include标记或父布局本身执行效果的原因。
我试过两种方法,但都没有成功。
更新
如果可能,应该以编程方式关闭。
更新2
其次,how would I go about keep the View elevated,一旦它有了动画?

最佳答案

您需要找到视图并调用适当的方法来更改状态列表animator和背景。您可能还需要在包含的布局的根视图上调用setclickable。

LinearLayout layout1 = findViewById(R.id.layout1);
View root = layout1.getChildAt(0);

StateListAnimator sla = AnimatorInflater.loadStateListAnimator(context, R.anim.lift_up);
root.setStateListAnimator(sla);
root.setBackground(R.drawable.ripple_effect);

08-15 23:52