Android listSelector应用于整个视图而不是项目

时间:2013-10-05 07:37:35

标签: android listview

我有ListView的代码:

<ListView
            android:id="@android:id/list"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_below="@+id/searchButton"
            android:divider="@color/DarkGoldenrod"
            android:dividerHeight="0.1dp"
            android:background="@drawable/list_selector"
            android:choiceMode="singleChoice" />

这是drawable的代码 - list_selector

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

   <item android:drawable="@android:color/holo_green_dark" android:state_pressed="true"/>
   <item android:drawable="@android:color/holo_blue_light" android:state_selected="true"/>
   <item android:drawable="@android:color/holo_orange_light" android:state_activated="true"/>

</selector>

此选择器正在应用于整个列表视图,如何将其应用于各个列表项?

谢谢。

4 个答案:

答案 0 :(得分:1)

列表选择器适用于整个listview,如果您为列表视图行充气,然后将该样式应用于该总视图布局。另外在onListitemClick方法中,它将为我们提供一个视图应用您的drawable view.setBackgroundResource(resid)

的视图

答案 1 :(得分:0)

使用listSelector而不是background

 <ListView
  android:id="@android:id/list"
  android:layout_width="match_parent"
  android:layout_height="match_parent"
  android:layout_below="@+id/searchButton"
  android:divider="@color/DarkGoldenrod"
  android:dividerHeight="0.1dp"
  android:listSelector="@drawable/list_selector"
  android:choiceMode="singleChoice" />

答案 2 :(得分:0)

我认为你应该在点击它时检查元素的类型。并在适配器中更改此项目的背景。

答案 3 :(得分:0)

列表视图选择器将应用于整个视图,因为它获得焦点。为了将其应用于视图的一部分,那么在这种情况下,在用于充气的布局内的视图上应用drawable列表视图。

那是: 假设你有一个相对布局和一个textview,然后将drawable设置为textview并设置为“setFocusable”为true,setfocusableon为textview设置为true。

试试这个。