2

我有一个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>
4

1 回答 1

1

setImageDrawable()使用并传递您的 xml 布局 (R.drawable.your_layout) 的 ID,而不是 setBackgroundColor 。

定义两种不同的 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>
于 2015-05-26T18:27:16.120 回答