【发布时间】:2015-02-11 22:16:16
【问题描述】:
我定义了一个可绘制的波纹并将其设置为列表视图项视图的背景。它几乎可以正常工作,但涟漪效应有时不会在按下时出现。
这是波纹可绘制代码:
<?xml version="1.0" encoding="utf-8"?>
<ripple xmlns:android="http://schemas.android.com/apk/res/android"
android:color="?android:attr/colorControlHighlight">
<item>
<selector>
<item android:state_activated="true">
<shape><solid android:color="?android:attr/colorButtonNormal"/>
</shape>
</item>
<item>
<shape><solid android:color="@android:color/transparent"/>
</shape>
</item>
</selector>
</item>
</ripple>
我有一个导航抽屉,它使用这个可绘制对象作为抽屉项目的背景:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="@dimen/navigation_menu_height"
android:orientation="horizontal"
android:background="@drawable/listItemBackground">
....
</RelativeLayout>
但是每次我打开应用程序时,默认选中的项目在我按下时不会显示波纹效果。但是在我选择另一个项目然后再次选择它之后,一切都会好起来的。
我使用完全相同的另一个几乎相同的ListView,除了选择模式是多重的。而这一次,项目只要被选中就不会出现按下的涟漪效果。
在另一个listView中,没有指定选择模式,只有第一项显示涟漪效果,其他与低版本Android相同。
我真的不知道如何让它适用于所有场景。是不是真的和ListView的选择模式有关?
====编辑====
我刚刚为这三个 listViews 添加了属性 drawSelectorOnTop,现在前两个问题都解决了。但是对于第三个,它现在变成了这样:
涟漪效果适用于所有项目,除了第一个显示两个涟漪的项目!其中一个从我手指按下的位置开始,而另一个总是从中间开始!
====再次编辑==== 好的,现在我调整drawable以将激活状态移动到涟漪节点之外,以及listview的drawSelectorOnTop属性,问题现在完全消失了。
【问题讨论】:
-
我正在查看您的第二次编辑 - 如果您找到了解决方案并修复了它,请继续将其作为详细答案发布,并将其标记为正确。它可能会对未来的人有所帮助。
-
在下面参考我的答案
标签: android android-listview rippledrawable