開發(fā)遇到以下需求侧到,點擊列表項改變背景和字體顏色,效果如下圖:
效果圖
我們可以看到左邊是一個listView委乌,點擊選中其中一項就會變成跟其他項不一樣的背景顏色床牧,字體顏色也會不一樣,這樣的效果怎么實現(xiàn)遭贸?
先從ListView屬性出發(fā),設(shè)置它為單選:
android:choiceMode="singleChoice"
<ListView
android:id="@+id/lv_symptoms"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="none"
android:choiceMode="singleChoice"
android:fadingEdge="none"
android:divider="@null"
android:cacheColorHint="@android:color/transparent"
android:background="@color/main_color"
android:layout_weight="3"/>
然后設(shè)置它的item布局的selector:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:background="@drawable/item_single_choice_selector">
<TextView
android:id="@+id/tv_bodysymptoms"
android:layout_width="match_parent"
android:layout_height="60dp"
android:duplicateParentState="true"
android:gravity="center"
android:text="全部癥狀"
android:textColor="@drawable/item_text_choice_selector"
android:textSize="14sp" />
</LinearLayout>
這里我們設(shè)置了item父布局的selector心软,也設(shè)置了textView的textColor壕吹,其中要設(shè)置TextView的這個屬性:android:duplicateParentState="true"
"item_single_choice_selector"
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:drawable="@drawable/choice_bg_color"/>
<item android:state_selected="true" android:drawable="@drawable/choice_bg_color"/>
<item android:state_activated="true" android:drawable="@drawable/choice_bg_color"/>
<item android:drawable="@drawable/main_color"/>
</selector>
"item_text_choice_selector"
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:state_pressed="true" android:color="@color/main_color"/>
<item android:state_selected="true" android:color="@color/main_color"/>
<item android:state_activated="true" android:color="@color/main_color"/>
<item android:color="@color/white"/>
</selector>
這是比較簡單實現(xiàn)ListView單選的方法著蛙,大家可以參考一下。