Android:设置listview的选择器颜色不工作
我有一个listview活动,其中我使用以下代码设置选择器颜色。但是,当我选择一个项目时,整个列表将使用选择器颜色高亮显示,这是我不想要的。我哪里做错了?感谢您的帮助Android:设置listview的选择器颜色不工作,android,listview,Android,Listview,我有一个listview活动,其中我使用以下代码设置选择器颜色。但是,当我选择一个项目时,整个列表将使用选择器颜色高亮显示,这是我不想要的。我哪里做错了?感谢您的帮助 ListView lv = getListView(); lv.setFocusableInTouchMode(true); lv.setBackgroundColor(Color.WHITE); lv.setSelector(R.color.blue); 使用此方法可使用选择器 在res/drawable中创建xml,并为不同
ListView lv = getListView();
lv.setFocusableInTouchMode(true);
lv.setBackgroundColor(Color.WHITE);
lv.setSelector(R.color.blue);
使用此方法可使用选择器
在
res/drawable
中创建xml,并为不同的设置颜色然后将此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>
<?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>
然后将选择器设置为
lv.setSelector( R.drawable.selector);
lv.setSelector( R.drawable.selector);
lv.setDrawSelectorOnTop(true); // if you have background Drawable on your listView
你必须定下来
android:state_selected = "true"
到
谢谢你的例子,这样对我更有效…试试这个。 在
res/drawable
中创建一个xml,并为不同的
然后将此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>
<?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>
然后将选择器设置为
lv.setSelector( R.drawable.selector);
lv.setSelector( R.drawable.selector);
lv.setDrawSelectorOnTop(true); // if you have background Drawable on your listView
此处的答案不适用于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按预期工作
来源:,无需设置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);
很抱歉,我没有足够的声誉在前面的答案中添加评论。谢谢你的答案Labeeb。但是我在xml错误中得到了错误:不允许使用颜色类型(在'drawable'处,值为'#808080')。谢谢Labeeb。我什么都跟着。但我没有看到任何选择器。没有可见的选择器。我该怎么办?我以前就是这样的。尝试删除setbackgroundcolor当我使用上面答案中的代码执行此操作时,整个ListView将以指定的颜色亮起,而不是我正在选择的单行,{-android.R.attr.state_pressed}是什么意思?