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的狀態來變化









發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章