在我的列表视图中,当用户长按某个项目时,我会绘制一个自定义操作栏并提供用户选项,以便一次删除多个项目。
默认情况下,如果我执行长按操作,我将选择颜色为蓝色,它会消失。
要克服我尝试添加这样的选择器。
listviewselector.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Selected -->
<item
android:state_focused="true"
android:state_selected="false"
android:drawable="@color/RED"/>
<!-- Pressed -->
<item
android:state_selected="true"
android:state_focused="false"
android:drawable="@color/BLUE" />
</selector>
如果我设置了这个选择器,当用户执行长按时,我可以看到红色,但是如果用户执行选择,病房后,项目上不会保留任何颜色。默认情况下,它看起来是白色的。
我尝试根据下面的条件设置背景颜色
if(mSelectedItemsIds.get(key))
{
convertView.setBackgroundColor(REDCOLOR);
}
else
{
convertView.setBackgroundColor(WHITE);
}
在这种情况下,如果用户执行长按,然后如果用户选择多个项目,我可以看到红色,默认情况下所有项目颜色将为白色。但是,如果用户触摸任何项目,默认颜色将是什么,即选择时不会出现颜色。
如何获得默认的白色,点击蓝色和多种选择红色?
我试过这个 新选择器:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Selected -->
<item
android:state_focused="true"
android:state_selected="false"
android:drawable="@color/RED"/>
<!-- Pressed -->
<item
android:state_selected="true"
android:state_focused="false"
android:drawable="@color/WHITE" />
</selector>
if(mSelectedItemsIds.get(key))
{
convertView.setBackgroundColor(mContext.getResources().getColor(R.color.RED));
}
else
{
convertView.setBackgroundColor(R.drawable.listviewselector);
}
在此我默认获得所有项目的蓝色。为什么呢?
答案 0 :(得分:1)
我试过这样,它有效。
if(mSelectedItemsIds.get(key))
{
convertView.setBackgroundColor(mContext.getResources().getColor(R.color.BLUE));
}
else
{
convertView.setBackgroundColor(android.R.drawable.list_selector_background);
}