开发遇到以下需求,点击列表项改变背景和字体颜色,效果如下图:
效果图
我们可以看到左边是一个listView,点击选中其中一项就会变成跟其他项不一样的背景颜色,字体颜色也会不一样,这样的效果怎么实现? 先从ListView属性出发,设置它为单选: 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"/> 然后设置它的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> 这里我们设置了item父布局的selector,也设置了textView的textColor,其中要设置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> 这是比较简单实现ListView单选的方法,大家可以参考一下。 (责任编辑:好模板) |