我有一个LinearLayout。我在它上应用了波纹效果,效果很好。我正在做的是当用户单击它时,它应该将其颜色更改为白色(默认为灰色)。如果再次单击,它将再次变为灰色。我使用layout.setBackgroundColor(Color.WHITE);实现了这一目标。

但是我既要波纹又要切换颜色。如果使用setBackgroundColor,则波纹效果消失。有关如何执行此操作的任何线索?

XML引起的涟漪(LinearLayout的背景):

<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/divider">
<item android:drawable="@color/background" />
</ripple>


请为棒棒糖前设备提出等效的解决方案。棒棒糖上的LinearLayout的背景是

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/divider" android:state_pressed="true" />
<item android:drawable="@android:color/transparent" />
</selector>

最佳答案

代替setBackgroundColor,使用setImageDrawable()并传递xml布局的ID(R.drawable.your_layout)。

定义两种不同的xml布局:一种具有灰色背面,另一种具有白色背景。

白色背景

 <?xml version="1.0" encoding="utf-8"?>
    <ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/divider">
    <item android:drawable="#ffffff" />
    </ripple>


灰色背景

 <?xml version="1.0" encoding="utf-8"?>
    <ripple xmlns:android="http://schemas.android.com/apk/res/android"
    android:color="@color/divider">
    <item android:drawable="888888" />
    </ripple>

10-08 14:59