0

我有这个代码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" />

这是可绘制的代码 - 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

4 回答 4

1

如果您要为 listview 行膨胀视图,则将列表选择器应用于整个listview视图,然后将该样式应用于该总视图布局。否则,在您的 onListitemClick 方法中,它将为我们提供一个视图,将您的可绘制对象应用到视图中view.setBackgroundResource(resid)

于 2013-10-05T07:54:01.080 回答
0

列表视图选择器将应用于整个视图,因为它获得焦点。为了将其应用于视图的一部分,然后在这种情况下,将可绘制对象应用于布局内用于膨胀列表视图的视图。

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

尝试这个。

于 2013-10-05T10:45:30.313 回答
0

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

于 2013-10-05T07:52:51.120 回答
0

使用 listSelector 代替背景

 <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" />
于 2013-10-05T07:41:06.037 回答