按下时会产生涟漪的Android背景,但选择时会显示纯色?

时间:2015-05-09 06:11:08

标签: android android-drawable

我尝试创建一个在按下时会产生涟漪的drawable,但是当调用view.setSelected(true)时,它会为背景保持纯色。

以下文件放在我的drawable-v21文件夹中:

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

    <item android:state_pressed="true">
        <ripple android:color="@color/green_primary">
            <item android:id="@android:id/mask">
                <shape android:shape="rectangle">
                    <solid android:color="@color/green_selected" />
                </shape>
            </item>
        </ripple>
    </item>
</selector>

我已经尝试了上述内容,并且在选择时它拥有坚实的背景,但没有涟漪效应,而只是一种淡入效果。如果我只有没有选择器的波纹,按下时它会正确地涟漪,但显然我没有selected状态。我怎么能把两个都烤成一个可绘制的背景?

1 个答案:

答案 0 :(得分:10)

您需要做的是:

1。在drawable-v21文件夹

中创建 ripple_effect.xml 文件
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
        android:color="@color/green_primary">
    <item android:drawable="@drawable/green_primary"/>
</ripple>

2。在drawable文件夹中创建 button_selector.xml 文件以设置所选的州色。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_selected="true"
            android:drawable="@color/green_selected"/>
    <item android:drawable="@drawable/ripple_effect"/>
</selector>