经过一段时间的寻找后,我一直无法找到这个问题的答案......
我有一个回收器视图,其中的项目在选择时具有红色背景和白色文本(之前背景为白色,文本为黑色)。为此,我使用选择器。
我最近尝试为此添加波纹效果,但除非我长时间单击该项目,否则该项目的背景会直接变为红色而没有波纹。我假设这是因为选择器状态 state_selected 覆盖了 sate_pressed 上的纹波?
有谁知道是否有办法解决这个问题?这是我使用的选择器代码:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@android:color/holo_red_dark" >
<item>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item
android:drawable="@drawable/ripple"
android:state_pressed="true"/>
<item
android:drawable="@android:color/holo_red_dark"
android:state_selected="true"/>
<item android:drawable="@android:color/white"/>
</selector>
</item>
</ripple>
提前致谢!
要创建具有波纹效果并显示选定状态的选择器背景,我执行以下操作:
首先定义突出显示颜色,并具有一定的透明度:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="selector_color">#660000ff</color>
</resources>
您可能希望在棒棒糖之前具有兼容性。将典型的老式选择器放入可绘制文件夹中:
- 可绘制/selector_background.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@color/selector_color" android:state_pressed="true"/>
<item android:drawable="@color/selector_color" android:state_selected="true"/>
<item android:drawable="@android:color/transparent"/>
</selector>
然后在drawable-v21文件夹中添加以下图层drawable:
- 可绘制-v21/selector_background.xml
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<selector>
<item android:state_selected="true"
android:drawable="@color/selector_color" />
<item android:drawable="@android:color/transparent" />
</selector>
</item>
<item>
<ripple android:color="@color/selector_color">
<item android:id="@android:id/mask">
<color android:color="@android:color/white" />
</item>
</ripple>
</item>
</layer-list>
现在你可以使用@drawable/selector_background
为您的选择器。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)