1

我想设置列表视图所选项目的颜色。我已经设置了列表视图项目和颜色。

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

5 回答 5

0

您可以使用:

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

android:listSelector="#AF5c12" // any color code to set color to selected item from list.
于 2012-09-17T09:01:05.487 回答
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" />
于 2012-09-17T09:02:14.487 回答
0

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

  <ListView
      android:listSelector="@android:color/holo_red_dark"
  </ListView
于 2012-09-17T09:02:14.763 回答
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",当您按下它时,它将为所选项目设置颜色。

于 2012-09-17T09:03:10.283 回答
0

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

对于其他 API 级别:您必须创建一个自定义数组适配器并在其中添加以下方法。最初选择位置 = -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);
}
于 2012-09-17T10:33:52.460 回答