字体颜色只是在按下那一瞬间改变,松手后立刻恢复
1.在res/color文件下创建item_text_selector.xml文件
<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选中后才恢复
处理思想:在适配器里写好字体变化的相关逻辑,然后在外部事件监听中改变某个值,通知字体改变。
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中引用
3.然后在自定义的适配器代码中
//当前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点击事件
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); }