Android:setviewer颜色为listview不工作

我有一个listview活动,我使用下面的代码设置select器的颜色。 但是,当我select一个项目时,整个列表将突出显示select器颜色,我不想要的。 我在哪里做错了? 任何帮助表示赞赏。

ListView lv = getListView(); lv.setFocusableInTouchMode(true); lv.setBackgroundColor(Color.WHITE); lv.setSelector(R.color.blue); 

Solutions Collecting From Web of "Android:setviewer颜色为listview不工作"

使用这种方式来使用select器
res/drawable创build一个xml,并为不同的事件状态设置颜色
然后这个XML作为select器
例如,让res/drawable/selector.xml

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

然后在your res\values\colors.xml声明灰色

 <color name="gray">#808080</color> 

然后将select器设置为

 lv.setSelector( R.drawable.selector); 

感谢你的例子,这对我来说这样更好…尝试这个。 在res/drawable创build一个xml,并为不同的事件状态设置颜色

然后这个XML作为select器
例如,让res/drawable/selector.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/gray" /> </selector> 

然后在res\values\strings.xml声明灰色

 <color name="gray">#808080</color> 

然后将select器设置为

 lv.setSelector( R.drawable.selector); lv.setDrawSelectorOnTop(true); // if you have background Drawable on your listView 

没有必要做res / drawable / selector.xml。
只需在onCreate方法中添加这些行:

 StateListDrawable selector = new StateListDrawable(); selector.addState(new int[]{android.R.attr.state_pressed}, new ColorDrawable(R.color.pressed_state_color)); selector.addState(new int[]{-android.R.attr.state_pressed}, new ColorDrawable(R.color.normal_state_color)); lv.setSelector(selector); 

对不起,我没有足够的声望来添加评论以前的答案。

你必须设置

 android:state_selected = "true" 

 android:state_selected = "false" 

这里的答案不适用于ListView中的自定义视图,因为无效背景。 解决方法是将每个项目的背景设置为android:background="?android:attr/activatedBackgroundIndicator" 。 这里是例子:

 <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="horizontal" android:background="?android:attr/activatedBackgroundIndicator"> <!-- your item content--> </LinearLayout> 

之后,StateListDrawable按预期工作。

资料来源: http : //www.michenux.net/android-listview-highlight-selected-item-387.html ,