http://www.yoyong.com/archives/224【有源码】

Add a comment4,625 views June 20th, 2011 android,listview android 设置listview选中背景色

listview是android常用的控件,点击listview item时,默认显示橘黄色的背景色,而且翻滚时也显示相应的颜色。这样往往会跟实际的软件UI设计风格很不协调。通过对listview背景颜色的设置,从而实现与软件UI风格相协调。

改变listview背景选项往往采用建立一个xml文件,如listview_bg.xml,里面定义selector的相关属性,将文件放着drawable的资源文件当资源文件使用,在listview item配置背景属性android:background=”@drawable/listview_bg”从而达到改变背景颜色的目的。

可是问题在于android:background=”@drawable/listview_bg”属性的设置是一个drawable资源文件,就是说listview_bg.xml配置drawable需要对应一个图片之类的资源文件,可是需求当中往往只需要颜色代码而不是图片资源。这个时候需要在listview_bg.xml配置drawable时,通过引用一个颜色的资源文件,即android:drawable=”@color/white”,这样就不需要引用类似android:drawable=”@drawable/image”这样的图片文件了。

以下是相关的代码文件。

listview_bg.xml(背景色状态设置)

view plain copy to clipboard print ?
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <selectorxmlns:android="http://schemas.android.com/apk/res/android">
  3. <!--没有焦点时的背景颜色-->
  4. <itemandroid:state_window_focused="false"
  5. android:drawable="@color/unfocused"/>
  6. <!--非触摸模式下获得焦点并单击时的背景颜色-->
  7. <itemandroid:state_focused="true"android:state_pressed="true"
  8. android:drawable="@color/pressed"/>
  9. <!--触摸模式下单击时的背景颜色-->
  10. <itemandroid:state_focused="false"android:state_pressed="true"
  11. android:drawable="@color/white"/>
  12. <!--选中时的背景颜色-->
  13. <itemandroid:state_selected="true"android:drawable="@color/selected"/>
  14. <!--获得焦点时的背景颜色-->
  15. <itemandroid:state_focused="true"android:drawable="@color/focused"/>
  16. </selector>

color.xml(颜色配置文件)

view plain copy to clipboard print ?
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <resources>
  3. <colorname="white">#ffffffff</color>
  4. <colorname="unfocused">#cccccccc</color>
  5. <colorname="pressed">#fff22fff</color>
  6. <colorname="selected">#fff33fff</color>
  7. <colorname="focused">#ffff44ff</color>
  8. </resources>

item.xml(listview Item选项布局文件)

view plain copy to clipboard print ?
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <!--items选项-->
  3. <RelativeLayout
  4. android:id="@+id/RelativeLayout"
  5. android:layout_width="fill_parent"
  6. xmlns:android="http://schemas.android.com/apk/res/android"
  7. android:layout_height="wrap_content"
  8. android:paddingBottom="4dip"
  9. android:paddingLeft="12dip"
  10. android:paddingRight="12dip"
  11. android:background="@drawable/listview_bg"
  12. >
  13. <ImageView
  14. android:paddingTop="22dip"
  15. android:layout_alignParentRight="true"
  16. android:layout_width="wrap_content"
  17. android:layout_height="wrap_content"
  18. android:id="@+id/more_image"
  19. />
  20. <TextView
  21. android:layout_height="wrap_content"
  22. android:textSize="18dip"
  23. android:layout_width="fill_parent"
  24. android:id="@+id/title"
  25. android:paddingTop="6dip"
  26. />
  27. <TextView
  28. android:text=""
  29. android:layout_height="wrap_content"
  30. android:layout_width="fill_parent"
  31. android:layout_below="@+id/title"
  32. android:id="@+id/date"
  33. android:paddingRight="20dip"
  34. />
  35. </RelativeLayout>

main.xml(listview文件)

view plain copy to clipboard print ?
  1. <?xmlversion="1.0"encoding="utf-8"?>
  2. <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
  3. android:orientation="vertical"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. >
  7. <ListViewandroid:layout_width="wrap_content"
  8. android:layout_height="wrap_content"
  9. android:divider="@color/white"
  10. android:dividerHeight="1dip"
  11. android:id="@+id/list_items"
  12. />
  13. </LinearLayout>

SelectorActivity.java(java源码文件)

view plain copy to clipboard print ?
  1. packagecom.test.main;
  2. importjava.util.ArrayList;
  3. importjava.util.HashMap;
  4. importandroid.app.Activity;
  5. importandroid.os.Bundle;
  6. importandroid.widget.ListView;
  7. importandroid.widget.SimpleAdapter;
  8. publicclassSelectorActivityextendsActivity{
  9. /**Calledwhentheactivityisfirstcreated.*/
  10. @Override
  11. publicvoidonCreate(BundlesavedInstanceState){
  12. super.onCreate(savedInstanceState);
  13. setContentView(R.layout.main);
  14. ListViewlist=(ListView)findViewById(R.id.list_items);
  15. ArrayList<HashMap<String,Object>>listItem=newArrayList<HashMap<String,Object>>();
  16. String[]title={"Apple","Google","Facebook"};
  17. String[]date={"2-12","5-16","9-12"};
  18. for(inti=0;i<3;i++)
  19. {
  20. HashMap<String,Object>map=newHashMap<String,Object>();
  21. map.put("more_image",R.drawable.more);//图像资源的ID
  22. map.put("title",title[i]);
  23. map.put("date",date[i]);
  24. listItem.add(map);
  25. }
  26. //数据源
  27. SimpleAdapterlistItemAdapter=newSimpleAdapter(SelectorActivity.this,listItem,
  28. R.layout.item,//ListItem的XML实现
  29. //动态数组与ImageItem对应的子项
  30. newString[]{"more_image","title","date"},
  31. //XML文件里面的一个ImageView,两个TextViewID
  32. newint[]{R.id.more_image,R.id.title,
  33. R.id.date});
  34. list.setAdapter(listItemAdapter);
  35. }
  36. }

最后效果图

android 设置listview item选中背景色_第1张图片

图-1 点击时的背景颜色

android 设置listview item选中背景色_第2张图片

图-2 翻滚时的背景颜色

更多相关文章

  1. AndroidManifest.xml文件剖析 (二)
  2. android中使用sqlite、复制assets下的数据库到SD卡、支持大于1M
  3. Android 设置背景色或者主题。
  4. Android第十八课 VS源码文件导入Android工程 中文乱码
  5. Android 主题之安装的APK主题文件
  6. 填坑总结:通过selector的android:state_checkable和android:state
  7. android中图片的三级cache策略(内存、文件、网络)之三:文件缓存策略
  8. 浅谈android的selector,背景选择器(看着有用就转载了)

随机推荐

  1. Android系列教程之四:Android项目的目录结
  2. Android中几种图像特效处理的集锦
  3. android 弹出日期滑动选择框,日期滚动滑动
  4. 写给初学者Android(安卓)AIDL必看内容
  5. Android(安卓)使用Parcelable传递对象
  6. android:manageSpaceActivity让应用手动
  7. 刚刚接触Android,写第一个Hello world 小
  8. [译]Android的垄断和如何利用它
  9. Android(安卓)ListView 滚动的N种方法
  10. Android应用程序的自动更新升级(自身升级