android 设置listview item选中背景色
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 ?- <?xmlversion="1.0"encoding="utf-8"?>
- <selectorxmlns:android="http://schemas.android.com/apk/res/android">
- <!--没有焦点时的背景颜色-->
- <itemandroid:state_window_focused="false"
- android:drawable="@color/unfocused"/>
- <!--非触摸模式下获得焦点并单击时的背景颜色-->
- <itemandroid:state_focused="true"android:state_pressed="true"
- android:drawable="@color/pressed"/>
- <!--触摸模式下单击时的背景颜色-->
- <itemandroid:state_focused="false"android:state_pressed="true"
- android:drawable="@color/white"/>
- <!--选中时的背景颜色-->
- <itemandroid:state_selected="true"android:drawable="@color/selected"/>
- <!--获得焦点时的背景颜色-->
- <itemandroid:state_focused="true"android:drawable="@color/focused"/>
- </selector>
color.xml(颜色配置文件)
view plain copy to clipboard print ?- <?xmlversion="1.0"encoding="utf-8"?>
- <resources>
- <colorname="white">#ffffffff</color>
- <colorname="unfocused">#cccccccc</color>
- <colorname="pressed">#fff22fff</color>
- <colorname="selected">#fff33fff</color>
- <colorname="focused">#ffff44ff</color>
- </resources>
item.xml(listview Item选项布局文件)
view plain copy to clipboard print ?- <?xmlversion="1.0"encoding="utf-8"?>
- <!--items选项-->
- <RelativeLayout
- android:id="@+id/RelativeLayout"
- android:layout_width="fill_parent"
- xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_height="wrap_content"
- android:paddingBottom="4dip"
- android:paddingLeft="12dip"
- android:paddingRight="12dip"
- android:background="@drawable/listview_bg"
- >
- <ImageView
- android:paddingTop="22dip"
- android:layout_alignParentRight="true"
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:id="@+id/more_image"
- />
- <TextView
- android:layout_height="wrap_content"
- android:textSize="18dip"
- android:layout_width="fill_parent"
- android:id="@+id/title"
- android:paddingTop="6dip"
- />
- <TextView
- android:text=""
- android:layout_height="wrap_content"
- android:layout_width="fill_parent"
- android:layout_below="@+id/title"
- android:id="@+id/date"
- android:paddingRight="20dip"
- />
- </RelativeLayout>
main.xml(listview文件)
view plain copy to clipboard print ?- <?xmlversion="1.0"encoding="utf-8"?>
- <LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"
- android:orientation="vertical"
- android:layout_width="fill_parent"
- android:layout_height="fill_parent"
- >
- <ListViewandroid:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:divider="@color/white"
- android:dividerHeight="1dip"
- android:id="@+id/list_items"
- />
- </LinearLayout>
SelectorActivity.java(java源码文件)
view plain copy to clipboard print ?- packagecom.test.main;
- importjava.util.ArrayList;
- importjava.util.HashMap;
- importandroid.app.Activity;
- importandroid.os.Bundle;
- importandroid.widget.ListView;
- importandroid.widget.SimpleAdapter;
- publicclassSelectorActivityextendsActivity{
- /**Calledwhentheactivityisfirstcreated.*/
- @Override
- publicvoidonCreate(BundlesavedInstanceState){
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- ListViewlist=(ListView)findViewById(R.id.list_items);
- ArrayList<HashMap<String,Object>>listItem=newArrayList<HashMap<String,Object>>();
- String[]title={"Apple","Google","Facebook"};
- String[]date={"2-12","5-16","9-12"};
- for(inti=0;i<3;i++)
- {
- HashMap<String,Object>map=newHashMap<String,Object>();
- map.put("more_image",R.drawable.more);//图像资源的ID
- map.put("title",title[i]);
- map.put("date",date[i]);
- listItem.add(map);
- }
- //数据源
- SimpleAdapterlistItemAdapter=newSimpleAdapter(SelectorActivity.this,listItem,
- R.layout.item,//ListItem的XML实现
- //动态数组与ImageItem对应的子项
- newString[]{"more_image","title","date"},
- //XML文件里面的一个ImageView,两个TextViewID
- newint[]{R.id.more_image,R.id.title,
- R.id.date});
- list.setAdapter(listItemAdapter);
- }
- }
最后效果图
图-1 点击时的背景颜色
图-2 翻滚时的背景颜色
更多相关文章
- AndroidManifest.xml文件剖析 (二)
- android中使用sqlite、复制assets下的数据库到SD卡、支持大于1M
- Android 设置背景色或者主题。
- Android第十八课 VS源码文件导入Android工程 中文乱码
- Android 主题之安装的APK主题文件
- 填坑总结:通过selector的android:state_checkable和android:state
- android中图片的三级cache策略(内存、文件、网络)之三:文件缓存策略
- 浅谈android的selector,背景选择器(看着有用就转载了)