Qia*_*ian 15 android android-listview rippledrawable
我定义了一个波纹drawable并将其设置为listview项目视图背景的背景.它几乎可以正常工作,但有时涟漪效应不会出现在印刷机上.
这是波纹可绘制代码:
<?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>
Run Code Online (Sandbox Code Playgroud)
我有一个导航抽屉,使用这个抽屉作为抽屉物品的背景:
<?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>
Run Code Online (Sandbox Code Playgroud)
但是,每次打开应用程序时,默认选中的项目在按下时都不会显示涟漪效果.但是在我选择另一个项目然后再次选择它之后,一切都会好起来的.
我对另一个几乎相同的ListView使用完全相同,只是选择模式是多个.而这一次,只要选择了项目,项目就不会显示出涟漪效应.
在另一个未指定选择模式的listView中,只有第一个项目显示涟漪效应,而其他项目的行为与较低的Android版本相同.
我真的不知道如何让它适用于所有场景.也许它真的与ListView的选择模式有关?
==== 编辑 ====
我刚为所有这三个listView添加了属性drawSelectorOnTop,现在清除了前两个问题.但是对于第三个,它现在变成这样:
涟漪效果对所有项目都有效,除了第一个显示两个涟漪的项目!其中一个从我的手指按下的位置开始,而另一个始终从中间开始!
==== 再次编辑 ====好了,现在我调整drawable将激活状态移动到ripple节点之外,并与listview的drawSelectorOnTop属性一起,问题现在完全消失了.
好的,经过一些尝试和错误,我终于得到了它的工作.
首先,将激活状态移出纹波节点:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_activated="true">
<shape>
<solid android:color="?android:attr/colorButtonNormal"/>
</shape>
</item>
<item>
<ripple android:color="?android:attr/colorControlHighlight">
<item>
<shape>
<solid android:color="@android:color/transparent"/>
</shape>
</item>
</ripple>
</item>
</selector>
Run Code Online (Sandbox Code Playgroud)
之后,对于使用drawable作为项目背景的ListView,将drawSelectorOnTop设置为true.
现在涟漪效应可以完美地发挥作用.
| 归档时间: |
|
| 查看次数: |
6421 次 |
| 最近记录: |