【问题标题】:ListView item ListSelector drawable flickeringListView item ListSelector drawable 闪烁
【发布时间】:2012-07-19 09:25:58
【问题描述】:

我的 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,高度也适用。

有什么建议吗?

【问题讨论】:

    标签: android listview drawable shape


    【解决方案1】:

    //在你的listview属性中试试

     android:cacheColorHint = "#00000000"
    

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

    在java代码中,你应该使用

    listView.setCacheColorHint(Color.TRANSPARENT);
    

    【讨论】:

    • 我设置好了。问题是别的,让我给你解释一下。我的行有customTextView,listSelection 有drawable。当我选择一个项目时,它会被选中,但是当我向上和向下滚动时保持该项目被选中,它会消失并再次回来。
    【解决方案2】:

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

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-09-06
        • 2015-03-18
        • 1970-01-01
        • 1970-01-01
        • 2012-09-13
        • 2013-08-04
        相关资源
        最近更新 更多