当前位置: 代码迷 >> Android >> Android ListView 点击Item的时分,改变文字颜色和背景色
  详细解决方案

Android ListView 点击Item的时分,改变文字颜色和背景色

热度:31   发布时间:2016-04-28 01:50:37.0
Android ListView 点击Item的时候,改变文字颜色和背景色

效果图如下:


list.xml:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="wrap_content"    android:orientation="vertical"    android:background="#ffffff"    android:paddingTop="10dp" >    <TextView        android:id="@+id/text"        android:layout_width="fill_parent"        android:layout_height="wrap_content"        android:gravity="center"        android:textSize="20sp" />    <View        android:layout_width="match_parent"        android:layout_height="1dp"        android:layout_marginTop="10dp"        android:background="#e6e6e6" />    <ListView        android:id="@+id/list"        android:layout_width="match_parent"        android:layout_height="wrap_content" >    </ListView></LinearLayout>
list_item.xml:

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:paddingLeft="20dp"    android:paddingTop="10dp"    android:paddingBottom="10dp"    android:background="@drawable/listitem_selector" >    <TextView        android:id="@+id/text1"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:textColor="@drawable/font_selector"        android:duplicateParentState="true"        android:gravity="center_vertical"        android:textSize="18sp" /></LinearLayout>

listitem_selector:

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <!-- 没有焦点时的背景颜色 -->    <item android:drawable="@color/unfocused" android:state_window_focused="false"/>    <!-- 非触摸模式下获得焦点并单击时的背景颜色 -->    <item android:drawable="@color/pressed" android:state_focused="true" android:state_pressed="true"/>    <!-- 触摸模式下单击时的背景颜色 -->    <item android:drawable="@color/pressed" android:state_focused="false" android:state_pressed="true"/>    <!-- 选中时的背景颜色 -->    <item android:drawable="@color/pressed" android:state_selected="true"/>    <!-- 获得焦点时的背景  颜色 -->    <item android:drawable="@color/pressed" android:state_focused="true"/></selector>

font_selector:

<?xml version="1.0" encoding="utf-8"?><selector xmlns:android="http://schemas.android.com/apk/res/android">    <item android:state_focused="true" android:color="#ff0030" /> <!-- focused -->    <item android:state_pressed="true" android:color="#ff0030" /> <!-- pressed -->    <item android:state_selected="true" android:color="#ff0030" /> <!-- pressed -->    <item android:color="#222222" /> <!-- default --></selector>
activity:

listView = (ListView) contentView1.findViewById(R.id.list);		ArrayList<HashMap<String, String>> data = new ArrayList<HashMap<String, String>>();		for (String i : name) {			HashMap<String, String> map = new HashMap<String, String>();			map.put("data", i);			data.add(map);		}		SimpleAdapter simple = new SimpleAdapter(getActivity(), data,				R.layout.layout_popup_item, new String[] { "data" },				new int[] { R.id.text1 });		listView.setAdapter(simple);
注意:

TextView 还要增加个属性

android:duplicateParentState="true"

这样才会跟随ParentView的状态来变化









  相关解决方案