我有一个listview活动,我在其中使用以下代码设置选择器颜色。但是当我选择一个项目时,整个列表会以选择器颜色突出显示,这是我不想要的。我在哪里做错了?任何帮助表示赞赏。
ListView lv = getListView();
lv.setFocusableInTouchMode(true);
lv.setBackgroundColor(Color.WHITE);
lv.setSelector(R.color.blue);
答案 0 :(得分:26)
使用这种方式使用选择器
在res/drawable
中创建一个xml,并设置不同event state的颜色
然后这个xml作为选择器
例如,让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>
然后将选择器设置为
lv.setSelector( R.drawable.selector);
答案 1 :(得分:2)
谢谢你的例子,这样对我来说效果更好......试试吧。
在res/drawable
中创建一个xml,并设置不同event state
然后这个xml作为选择器
例如,让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>
然后将选择器设置为
lv.setSelector( R.drawable.selector);
lv.setDrawSelectorOnTop(true); // if you have background Drawable on your listView
答案 2 :(得分:2)
无需制作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);
抱歉,我没有足够的声誉为以前的答案添加评论。
答案 3 :(得分:0)
您必须设置
android:state_selected = "true"
到
android:state_selected = "false"
答案 4 :(得分:0)
由于背景无效,此处的答案不适用于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,