列表视图的选择器不起作用

时间:2012-06-21 14:10:33

标签: android android-layout android-listview

我想在listview中设置行的颜色,如果选择为黄色,否则为白色,所以我使用以下选择器

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_enabled="true" 
     android:state_pressed="true" android:drawable="@color/encounter_normal"  />
    <item android:state_enabled="true"
     android:state_focused="true" android:drawable="@color/encounter_normal" />
    <item android:state_enabled="true"
     android:state_selected="true" android:drawable="@color/encounterselector_color" />
    <item
     android:drawable="@color/encounter_normal"  />
</selector>

其中

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="encounterselector_color">#fbeda5</color>
    <color name="encounter_normal">#ffffff</color>  
</resources>

我用它如下

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal" 

    android:id="@+id/EncounterGrid"
    android:background="@drawable/encounterlistview"

    >
 <!-- remaining code -->

但行总是白色的,任何想法如何解决     

4 个答案:

答案 0 :(得分:0)

使用选择器设置背景颜色有点棘手。基本上,您必须为每种颜色创建一个drawable,并在android:drawable属性中使用它们。你不能直接使用颜色。

检查此related question以获取更多详细信息。

答案 1 :(得分:0)

我使用以下内容:

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

<!-- This is the switched off state -->
<item   android:state_enabled="false"
        android:drawable="@drawable/grey_bar" />

<!-- These are the partial states -->
<item   android:state_pressed="true"
        android:drawable="@drawable/button_pressed" />        

<item   android:state_focused="true" android:state_enabled="true"
        android:drawable="@drawable/button_focused" />

<!--  This is the switched on state -->
<item   android:state_enabled="true"
        android:drawable="@drawable/button_normal" />
</selector>

我指向的所有drawable都是在xml中定义的,或者是现有的9个补丁图像。

答案 2 :(得分:0)

在您的选择器上使用android:color而不是android:drawable,因为您正在引用颜色资源,因此您的选择器将如下所示:

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item android:state_enabled="true" 
     android:state_pressed="true" android:color="@color/encounter_normal"  />
    <item android:state_enabled="true"
     android:state_focused="true" android:color="@color/encounter_normal" />
    <item android:state_enabled="true"
     android:state_selected="true" android:color="@color/encounterselector_color" />
    <item
     android:color="@color/encounter_normal"  />
</selector>

答案 3 :(得分:0)

在我设置drawSelectorOnTop = "true"之前,没有什么对我有用。

之后一切都有效。