字体颜色只是在按下那一瞬间改变,松手后马上恢复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); }