我正在Google Play商店中实现类似的导航抽屉,我想在DrawerLayout中设置列表视图的所选项目。但后来我发现在触摸模式下无法选择项目,并且在我单击它之后设置了一个项目进行检查。然而,所有项目都保持相同的白色背景。
我希望选中的项目具有灰色突出显示的背景,所以我尝试了View.setBackgroundColor()。但后来我发现涟漪效应消失了!似乎涟漪效应是在后台资源中定义的。
我到处都是谷歌,但没有找到解决方案。一些结果建议使用标签来制作自定义背景,但需要API 21。
所以最后我的问题是,如何创建自定义背景,在L设备上显示涟漪效果,同时在前L设备上显示正常的高亮背景?
答案 0 :(得分:1)
我建议您使用NavigationView http://developer.android.com/reference/android/support/design/widget/NavigationView.html?utm_campaign=io15&utm_source=dac&utm_medium=blog。
使所有选择和设计简单,兼容。您可以在设计支持包http://android-developers.blogspot.no/2015/05/android-design-support-library.html
中找到它Gradle / MAven dep:
compile 'com.android.support:design:22.2.0'
答案 1 :(得分:1)
您需要创建一个替代的可绘制资源:res/drawable
中的一个和res/drawable-v21
中的另一个。
RES /可绘:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@color/background_pressed" />
<item android:state_focused="true" android:drawable="@color/background_focused" />
<item android:drawable="@color/background_default" />
</selector>
RES /抽拉-V21 :
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="@color/background_ripple" />
这应该设置为前景(在FrameLayout上可用)。
弱,我误解了这个问题。您当然可以将波纹设置为背景 - 并将上述drawable设置为任何(可点击)视图的背景将启用棒棒糖+上的涟漪效果以及棒棒糖前的常规聚焦/按下状态。如果我在你的情况下,我会把它设置为前景,并保持你拥有的当前背景(这取决于检查状态),这应该达到你想要的效果,但不回答确切的问题你问。