2

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

我包括我的 xml 布局:

列表显示:

<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>

可绘制布局: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>

此外,我什至指定形状宽度,形状自动填充_parent,高度也适用。

有什么建议么?

4

3 回答 3

1

//尝试在您的列表视图属性中

 android:cacheColorHint = "#00000000"

或者

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

在java代码中,你应该使用

listView.setCacheColorHint(Color.TRANSPARENT);
于 2012-07-19T09:29:51.450 回答
0

不知道您是否得到了答案,但我们曾经遇到过类似的问题。我们通过在列表项的布局文件中为外部元素设置背景来修复它:

列表项.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 文件设置按下、选择和正常状态的值,如果您愿意,可以将颜色更改为其他可绘制对象。似乎解决了我们遇到的奇怪的背景闪烁问题。

于 2012-10-17T20:48:02.910 回答
0

在你的列表视图中试试这个:

android:listSelector="@android:color/transparent"
android:cacheColorHint="#00000000"
android:focusable="false"
android:focusableInTouchMode="false"
于 2012-07-19T09:57:08.343 回答