ListView项ListSelector可绘制闪烁

时间:2012-07-19 09:25:59

标签: android listview drawable shape

我的listSelection有一个自定义drawable。当我选择一个项目时,它会被选中。但是当我滚动浏览其他项目(向上/向下滚动)时,背景会闪烁,有时它也会消失。

我包括我的xml布局:

的ListView:

<ListView
            android:id="@id/listView"
            android:layout_width="100dp"
            android:layout_height="fill_parent"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:listSelector="@drawable/list_selector"
            android:clickable="true"
            android:divider="@drawable/separetor_drawable"
            android:fastScrollEnabled="true"
            android:paddingLeft="15dp"
            android:paddingRight="15dp"
            android:scrollbars="none" >
        </ListView>

drawable layout:list_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle" >

    <corners android:radius="6dp" />

    <solid android:color="@color/grey" />

    <size android:width="50dp" />

</shape>

另外,我甚至指定形状宽度自动fill_parent形状,也适用于高度。

有什么建议吗?

3 个答案:

答案 0 :(得分:1)

//尝试将listview属性作为

 android:cacheColorHint = "#00000000"

android:cacheColorHint="@android:color/transparent"

在java代码中,您应该使用

listView.setCacheColorHint(Color.TRANSPARENT);

答案 1 :(得分:0)

在列表视图中尝试此操作:

android:listSelector="@android:color/transparent"
android:cacheColorHint="#00000000"
android:focusable="false"
android:focusableInTouchMode="false"

答案 2 :(得分:0)

不知道你是否得到了答案,但我们一度也有类似的问题。我们通过在listitem的布局文件中设置外部元素的背景来修复它:

listitem.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:background="@drawable/listselector"
...>
....
</RelativeLayout>

然后是drawable .. listselector.xml

<?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/blue" />
<item android:state_selected="true" android:state_pressed="false" android:drawable="@color/yellow" />
<item android:state_selected="false" android:state_pressed="false" android:drawable="@color/black" />
</selector>

后台xml文件设置按下,选定和正常状态的值,如果愿意,您可以将颜色更改为其他可绘制的颜色。似乎是为了解决我们遇到的奇怪的背景闪烁问题。