字體顏色只是在按下那一瞬間改變,鬆手後馬上恢復android
1.在res/color文件下建立item_text_selector.xml文件ide
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@color/colorAccent" android:state_pressed="true"></item> <item android:color="@color/colorPrimaryDark" android:state_pressed="false"></item> </selector>
2.在TextView中引用便可字體
android:textColor="@drawable/item_text_selector"
字體顏色按下後就一直爲改變的顏色,鬆手後不會恢復,直到下一個Item選中後才恢復this
處理思想:在適配器裏寫好字體變化的相關邏輯,而後在外部事件監聽中改變某個值,通知字體改變。xml
1.將item_text_selector.xml中的state_pressed改成state_selected事件
<selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:color="@color/colorleft" android:state_selected="true"></item> <item android:color="@color/colorTextt" android:state_selected="false"></item> </selector>
2.在TextView中引用get
3.而後在自定義的適配器代碼中it
//當前Item被點擊的位置 private int currentItem; public void setCurrentItem(int currentItem) { this.currentItem = currentItem; }
而後在getView()方法中事件監聽
//設置文本內容 viewHolder.videotwo_list_time.setText("課程時長:"+i1+"分鐘"); if (currentItem == i) { //若是被點擊,設置當前TextView被選中 viewHolder.videotwo_list_title.setSelected(true); viewHolder.videotwo_list_time.setSelected(true); } else { //若是沒有被點擊,設置當前TextView未被選中 viewHolder.videotwo_list_title.setSelected(false); viewHolder.videotwo_list_time.setSelected(false); }
4.最後在Activity中編寫ListView的Item點擊事件sed
mVideotwoLisview.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { //改變選中狀態 adpater.setCurrentItem(i); //通知ListView改變狀態 adpater.notifyDataSetChanged(); } });
改變背景顏色 也是相似
if (currentItem == i) { //若是被點擊,設置當前TextView被選中 viewHolder.videotwo_list_title.setSelected(true); viewHolder.videotwo_list_time.setSelected(true); viewHolder.videotwo_carryout.setSelected(true); // viewHolder.videotwo_listview.setBackground(R.drawable.baidihongbian); viewHolder.videotwo_listview.setBackgroundResource(R.drawable.baidihongbian); } else { //若是沒有被點擊,設置當前TextView未被選中 viewHolder.videotwo_list_title.setSelected(false); viewHolder.videotwo_list_time.setSelected(false); viewHolder.videotwo_carryout.setSelected(false); // viewHolder.videotwo_listview.setBackgroundColor(); viewHolder.videotwo_listview.setBackgroundResource(R.color.gray_f4); }