Android ListView项目在选择时闪烁

时间:2011-05-12 12:45:13

标签: android android-listview

我正在创建一个自定义ListView,如下所示

主要布局

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center">

    <ListView android:id="@+id/listview"
    android:layout_width="0dip"
    android:layout_height="wrap_content"
    android:layout_margin="3dip"  
    android:fadingEdge="none"
    android:soundEffectsEnabled="true"       
    android:clickable="true"                
    android:scrollbars="none"
    android:divider="#ffcccccc"
    android:dividerHeight="1dip"                
    android:layout_weight="1"/>
</LinearLayout>

自定义ListView

<RelativeLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:background="@drawable/sellistitem">  
  <TextView
   android:id="@+id/ListItem"       
   android:layout_width="wrap_content"
   android:layout_height="30dip"
   android:layout_margin="1dip"             
   android:textColor="@color/BLACK"
   android:gravity="center_vertical"
   android:layout_alignParentLeft="true"
   android:layout_alignParentTop="true" 
   android:padding="5dip"/>           
</RelativeLayout>

和Selector如下

<selector 
xmlns:android="http://schemas.android.com/apk/res/android"> 
<item android:state_pressed="true" android:drawable="@drawable/BLUE" /> 
<item android:drawable="@drawable/WHITE" /> 
</selector> 

The Drawable

 <resources>
    <drawable name="WHITE">#ffffff</drawable>
    <drawable name="BLUE">#ff0033cc</drawable>
 </resources>

完成此操作后,选择部分工作正常。但是,当我单击任何项​​目时,所选项目会在实际变为蓝色之前闪烁两次。它不会直接变为蓝色。如何消除这种闪烁效果?

问候,

2 个答案:

答案 0 :(得分:0)

试试这个android:cacheColorHint="#00000000"listview

答案 1 :(得分:0)

一般来说,选择器很棘手。请尝试使用此选择器:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
  <item android:state_pressed="true" 
        android:state_enabled="true"
        android:drawable="@drawable/selected_background" />
  <item android:state_focused="false" 
        android:state_pressed="false" 
        android:state_selected="false"
        android:state_checked="false" 
        android:state_enabled="true" 
        android:state_checkable="false"
        android:drawable="@drawable/normal_background"/>
</selector>

请注意,android:drawable attribute 必须是可绘制的。如果它是一种简单的颜色,您可以使用@color/background_color格式引用它。

编辑:

好吧,那些白色和蓝色的“drawables”不是drawables,它们只是颜色,你最好在colors.xml中定义它们。可能这实际上是闪烁的原因。

<resources>
    <color name="blue">#ff0033cc</color>
    <color name="white">#ffffff</color>
</resources>