如何填充所选列表项的颜色

时间:2012-09-17 08:56:57

标签: android

我想在列表视图选择项目上设置颜色。我已经设置了列表视图项目和颜色。

 { 
    setListAdapter(new ArrayAdapter<String>(getActivity(),
R.layout.simple_list_item_checkable_1, android.R.id.text1,Data.PERSON));

    ListView listView = getListView();
    listView.setTextFilterEnabled(true);

    listView.setOnItemLongClickListener(new OnItemLongClickListener() {
    public void onItemClick(AdapterView<?> parent, View view,int position, long id) {

    int childCount = parent.getChildCount();
    for (int i = 0; i < childCount; i++) {
    View listItem = parent.getChildAt(i);

    if (listItem != null)
    parent.setBackgroundColor(0x00000000);  
    view.setBackgroundColor(Color.RED);     
    }
      });       
 }                                                                                           

5 个答案:

答案 0 :(得分:0)

您可以使用:

在包含listView的XML中声明以下属性。

android:listSelector="#AF5c12" // any color code to set color to selected item from list.

答案 1 :(得分:0)

使用listSelector属性设置所选的项目颜色:

<ListView android:id="@+id/list" 
  android:layout_width="fill_parent"
  android:layout_height="wrap_content" 
  android:layout_gravity="center"
  android:divider="@null" 
  android:dividerHeight="0dip"
  android:listSelector="@drawable/list_selector" />

答案 2 :(得分:0)

您可以在xml中设置所选的项目颜色:

  <ListView
      android:listSelector="@android:color/holo_red_dark"
  </ListView

答案 3 :(得分:0)

这样做:

<selector xmlns:android="http://schemas.android.com/apk/res/android">

   <item android:state_pressed="true">
       <shape  >
         <solid android:color="#929292" />
       </shape>
   </item>



   <item>
     <shape  >
        <solid android:color="#FFFFFF" />
     </shape>
   </item>

 </selector>

使用此属性android:state_pressed="true",当您按下它时,它将为所选项目生成颜色。

答案 4 :(得分:0)

最低API级别 11 : 创建一个属性为 android:state_activated = true / false 的选择器文件 并将其设置为列表项的背景。 还包括代码: listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

对于其他API级别: 您必须创建一个自定义数组适配器并在其中添加以下方法。 最初 selectedPosition = -1; //这样做是为了在第一次加载列表时删除选择。

public void setseletion(int position) {
   this.selectedPosition = position; // selected position in the list
   notifyDataSetChanged();
}

在getView()方法中,除了设置列表外还包括

public View getView(int position, View convertView, ViewGroup parent) {
if (position == selectedPosition) {
        convertView.setBackgroundColor(getResources().getColor(
                    R.color.gray));
} else {
        convertView.setBackgroundColor(getResources().getColor(
                    R.color.transparent));
}

最后在列表视图的OnItemClickListener中包含它。

public void onItemClick(AdapterView<?> arg0, View view, int position,
        long arg3) {
    MyArrayAdapter adapter = (MyArrayAdapter) listView.getAdapter();
    adapter.setseletion(position);
}