【发布时间】:2014-10-16 02:23:57
【问题描述】:
android L 开发者预览版中的标准ListView 选择器使用colorControlHighlight 来实现触摸的波纹效果,并且在未聚焦状态下具有透明背景。
我想定义一个ListView 项目,它具有彩色背景,并且在触摸时仍会显示具有相同突出显示颜色的波纹效果。现在,如果我定义以下可绘制对象:
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:colorControlHighlight">
<item android:drawable="@color/my_background_color"/>
</ripple>
它有效,但波纹从ListView 项目的中间开始,无论触摸位置如何。如果我在ListView 之外使用相同的背景,例如对于LinearLayout,它按预期工作(波纹从触摸位置开始)。
【问题讨论】:
-
您是否在列表项上指定背景并将列表选择器设置为空?
-
您可以简单地将您的列表项背景设置为一种颜色并将列表选择器保留为默认值吗? ListView 对触摸事件有特殊处理,这可能会阻止您获得您想要的效果(尽管请随时在code.google.com/p/android-developer-preview/wiki/… 提交关于此的错误)。
-
将列表项背景设置为纯色将不起作用,这将覆盖列表选择器。如问题中所述,将波纹选择器设置为项目背景不会收到来自 ListView 的触摸热点。我决定遵循不设置任何列表项背景并将波纹设置为 listSelector 的模式。唯一的问题是我不能有一些具有不同背景的列表项并保持波纹,例如突出未读消息。
-
您解决了这个问题吗?我现在也面临同样的情况......
标签: android listview material-design android-5.0-lollipop rippledrawable