当前位置:   article > 正文

ListView 之 更改背景色_qml listview 背景色

qml listview 背景色
下面的代码实现更改 ListItem 的背景色,可能不是很好,但能达到效果,点击、长按、方向键选中都会保留背景色:

1、listView控件

  1. <ListView
  2. android:id="@+id/contact_listview"
  3. android:layout_width="wrap_content"
  4. android:layout_height="400dip"
  5. android:divider="#b9b9b9"
  6. android:dividerHeight="1px"
  7. android:cacheColorHint="#00000000"
  8. android:listSelector="@drawable/list_selector"
  9. android:headerDividersEnabled="true">
  10. </ListView>
2、在drawable文件夹中见一个list_selector.xml文件,不用写什么内容,只是用来把系统自带的给覆盖掉。

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <selector xmlns:android="http://schemas.android.com/apk/res/android">
  3. </selector>
3、在values文件夹中新建一个colors.xml文件,用来写颜色值:

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <resources>
  3. <color name="list_item_focus">#626fcd</color>
  4. </resources>
4、在java文件里定义一个私有变量private View itemView;用来保存上一次选中的listitem。


5、在下面三种事件中改变背景色

  1. //listview的itme选中事件
  2. private OnItemSelectedListener itemSelectedListener = new OnItemSelectedListener() {
  3. @Override
  4. public void onItemSelected(AdapterView<?> arg0, View arg1, int arg2,
  5. long arg3) {
  6. itemBackChanged(arg1);
  7. position = arg2;
  8. }
  9. @Override
  10. public void onNothingSelected(AdapterView<?> arg0) {
  11. }
  12. };
  13. //长按事件
  14. private OnItemLongClickListener itemLongClickListener = new OnItemLongClickListener() {
  15. @Override
  16. public boolean onItemLongClick(AdapterView<?> parent, View view,
  17. int position, long id) {
  18. itemBackChanged(view);
  19. ContactGrpMemActivity.this.position = position;
  20. return false;
  21. }
  22. };
  23. //listview的item点击事件
  24. private OnItemClickListener itemClicklistener = new OnItemClickListener() {
  25. @Override
  26. public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
  27. long arg3) {
  28. Log.i(TAG, "**************onItemClick arg0 is " + arg0.getClass().getName());
  29. Log.i(TAG, "**************onItemClick arg1 is " + arg1.getId());
  30. Log.i(TAG, "**************onItemClick arg2 is " + arg2);
  31. Log.i(TAG, "**************onItemClick arg3 is " + arg3);
  32. itemBackChanged(arg1);
  33. position = arg2;
  34. }
  35. };
  36. //改变listitem的背景色
  37. private void itemBackChanged(View view) {
  38. //改变当前点击的listitem中textview的字体颜色
  39. TextView contactName = (TextView)view.findViewById(R.id.contactName);
  40. TextView contactTel = (TextView)view.findViewById(R.id.contactTel);
  41. contactName.setTextColor(Color.WHITE);
  42. contactTel.setTextColor(Color.WHITE);
  43. if(itemView == null) itemView = view;
  44. if(itemView != view) {
  45. //改变上次点击点击的listitem中textview的字体颜色
  46. contactName = (TextView)itemView.findViewById(R.id.contactName);
  47. contactTel = (TextView)itemView.findViewById(R.id.contactTel);
  48. contactName.setTextColor(Color.BLACK);
  49. contactTel.setTextColor(Color.BLACK);
  50. }
  51. itemView.setBackgroundColor(android.R.color.transparent);//将上次点击的listitem的背景色设置成透明
  52. view.setBackgroundResource(R.color.list_item_focus);//设置当前点击的listitem的背景色
  53. itemView = view;
  54. }
6、如果是图片的话,第三部可以跳过,第5步中view.setBackgroundResource(R.color.list_item_focus)改成view.setBackgroundResource(R.drawable.select_bar);就行了。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/170792
推荐阅读
相关标签
  

闽ICP备14008679号