android中的listview选择颜色

时间:2014-06-24 17:20:21

标签: android css listview android-listview colors

在我的列表视图中,当用户长按某个项目时,我会绘制一个自定义操作栏并提供用户选项,以便一次删除多个项目。

默认情况下,如果我执行长按操作,我将选择颜色为蓝色,它会消失。

要克服我尝试添加这样的选择器。

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);
            }

在此我默认获得所有项目的蓝色。为什么呢?

1 个答案:

答案 0 :(得分:1)

我试过这样,它有效。

if(mSelectedItemsIds.get(key))
        {
            convertView.setBackgroundColor(mContext.getResources().getColor(R.color.BLUE));
        }
        else
        {
            convertView.setBackgroundColor(android.R.drawable.list_selector_background);
        }