Android ListView的item背景色设置以及item点击无响应等相关问题

  在Android开发中,listview控件是非常常用的控件,在大多数情况下,大家都会改掉listview的item默认的外观,下面讲解以下在使用listview时最常见的几个问题。

1.如何改变item的背景色和按下颜色

  listview默认情况下,item的背景色是黑色,在用户点击时是黄色的。如果需要修改为自定义的背景颜色,一般情况下有三种方法:

  1)设置listSelector

  2)在布局文件中设置item的background

  3)在adapter的getview中设置

  这三种方法都能达到改变item默认的背景色和按下颜色,下面来分别讲解,但是在这之前需要先写好selector.xml文件;

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <selector
  3. xmlns:android="http://schemas.android.com/apk/res/android">
  4. <item android:state_pressed="true" android:drawable="@color/light_blue"></item>
  5. <item android:state_pressed="false" android:drawable="@color/sgray"></item>
  6. </selector>

  在改变button或者listview的item默认背景色,就可以用到selector。drawable可以设置为色彩资源,也可以设置为图片资源。

  1)设置listview的listSelector

  1. <ListView
  2. android:id="@+id/history_list"
  3. android:layout_width="fill_parent"
  4. android:layout_height="wrap_content"
  5. android:divider="#565C5D"
  6. android:dividerHeight="3dp"
  7. android:listSelector="@drawable/selector"
  8. android:cacheColorHint="@android:color/transparent">
  9. </ListView>

  2)在listitem的布局文件中设置background属性,下面是listitem的布局文件

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:layout_width="fill_parent"
  5. android:layout_height="fill_parent"
  6. android:background="@drawable/selector">
  7. <TextView
  8. android:layout_width="wrap_content"
  9. android:layout_height="wrap_content"
  10. android:text="历史记录"
  11. android:textColor="#ffffff"
  12. android:textSize="20sp"
  13. android:layout_centerInParent="true">
  14. </TextView>
  15. </RelativeLayout>

  3)在adapter的getView方法中设置

  1. if(convertView ==null)
  2. {
  3. convertView = LayoutInflater.from(context).inflate(R.layout.listitem, null);
  4. }
  5. convertView.setBackgroundResource(R.drawable.selector);

  上述方法都能达到同样的效果,就是改变item默认的背景色和点击时的背景颜色,第三种方法最灵活,如果listview的奇数行和偶数行需要设置为不同的selector,只能用第三种方法。

2.包含button,checkbox等控件时点击无响应问题。

  如果listitem里面包括button或者checkbox等控件,默认情况下listitem会失去焦点,导致无法响应item的事件,最常用的解决办法是在listitem的布局文件中设置descendantFocusability属性。

  1. <?xml version="1.0" encoding="utf-8"?>
  2. <RelativeLayout
  3. xmlns:android="http://schemas.android.com/apk/res/android"
  4. android:layout_width="wrap_content"
  5. android:layout_height="wrap_content"
  6. android:paddingTop="10dp"
  7. android:paddingBottom="10dp"
  8. android:paddingLeft="5dp"
  9. android:paddingRight="5dp"
  10. android:descendantFocusability="blocksDescendants">
  11.  
  12. <CheckBox
  13. android:id="@+id/history_item_checkbt"
  14. android:layout_height="30dp"
  15. android:layout_width="wrap_content"
  16. android:layout_centerVertical="true"
  17. android:layout_alignParentLeft="true"
  18. android:checked="false"
  19. >
  20. </CheckBox>
  21.  
  22. <ImageView
  23. android:id="@+id/history_item_image"
  24. android:layout_width="wrap_content"
  25. android:layout_height="wrap_content"
  26. android:layout_centerVertical="true"
  27. android:layout_toRightOf="@id/history_item_checkbt"
  28. android:background="@drawable/item_icon">
  29. </ImageView>
  30.  
  31. <Button
  32. android:id="@+id/history_item_edit_bt"
  33. android:layout_alignParentRight="true"
  34. android:layout_width="wrap_content"
  35. android:layout_height="wrap_content"
  36. android:layout_centerVertical="true"
  37. android:text="编辑"
  38. android:textColor="#ffffff"
  39. android:textSize="14sp"
  40. android:background="@drawable/button_bg">
  41. </Button>
  42.  
  43. <TextView
  44. android:id="@+id/history_item_time_tv"
  45. android:layout_width="wrap_content"
  46. android:layout_height="wrap_content"
  47. android:layout_centerVertical="true"
  48. android:textColor="#565C5D"
  49. android:textSize="14sp"
  50. android:text="10-01 10:20"
  51. android:layout_marginRight="5dp"
  52. android:layout_toLeftOf="@id/history_item_edit_bt">
  53. </TextView>
  54.  
  55. <TextView
  56. android:id="@+id/history_item_title_tv"
  57. android:layout_height="wrap_content"
  58. android:layout_width="fill_parent"
  59. android:layout_centerVertical="true"
  60. android:textColor="#565C5D"
  61. android:textSize="14sp"
  62. android:text="xxxxxxxxXXXXXXXXXXXXXXXX"
  63. android:ellipsize="end"
  64. android:maxLines="1"
  65. android:layout_toRightOf="@id/history_item_image"
  66. android:layout_toLeftOf="@id/history_item_time_tv"
  67. android:layout_marginLeft="3dp">
  68. </TextView>
  69.  
  70. </RelativeLayout>

Android ListView的item背景色设置以及item点击无响应等相关问题的更多相关文章

  1. android ListView的上部下拉刷新下部点击加载更多具体实现及拓展

    android ListView的上部下拉刷新下部点击加载更多具体实现及拓展 ListView下拉刷新,上拉自动加载更多 下拉刷新以及加载更多

  2. android stuido 在线安装svn插件,添加版本库无响应

    问题:android stuido 中在线安装svn插件,添加版本库无响应. 原因: 由于android stuido 版本较高,在线安装1.6x 版本的svn,添加版本库一直没有响应,最后卡死.. ...

  3. 解决httpclient设置代理ip之后请求无响应的问题

    httpclient这个工具类对于大家来说应该都不陌生吧,最近在使用过程中出现了碰到一个棘手的问题,当请求的接口地址由http变成https之后,程序执行到 httpClient.execute(ht ...

  4. Android ListView的item背景色设置

    1.如何改变item的背景色和按下颜色 listview默认情况下,item的背景色是黑色,在用户点击时是黄色的.如果需要修改为自定义的背景颜色,一般情况下有三种方法: 1)设置listSelecto ...

  5. Android ListView的item点击无响应的解决方法

    假设listitem里面包含button或者checkbox等控件,默认情况下listitem会失去焦点,导致无法响应item的事件,最经常使用的解决的方法 是在listitem的布局文件里设置des ...

  6. Android ListView嵌套Button,Button事件覆盖item事件解决办法

    方法就是修改item布局的xml文件: 在根布局里加上: android:descendantFocusability="blocksDescendants" 然后在按钮布局里加上 ...

  7. [Android]ListView中分割线的设置

    1.在布局文件中ListView元素中通过属性设置 android:divider="#fffff"  分割线颜色 android:dividerHeight="1px& ...

  8. Android ListView中按钮监听器设置的解决方案

    在做安卓应用开发的时候很经常会用到ListView,并且每一个Item里面都会有按钮之类的需要进行事件监听的控件.在给按钮添加OnClickListener的时候,一开始很下意识的会想在ListVie ...

  9. Android ListView的header footer设置visibility gone不起作用

    常用的ViewGroup,例如LinearLayout,在onMeasure方法内对每个child view执行measure前,会判断child view的visibility是否为gone.如果是 ...

随机推荐

  1. List,泛型和Datatable 的相互转换

    public static DataTable ToDataTableTow(IList list) { DataTable result = new DataTable(); ) { Propert ...

  2. kindeditor扩展粘贴截图功能&修改图片上传路径并通过webapi上传图片到图片服务器

    前言 kindeditor是一个非常好用的富文本编辑器,它的简单使用我就不再介绍了. 而kindeditor却对图片的处理不够理想. 本篇博文需要解决的问题有两个: kindeditor扩展粘贴图片功 ...

  3. linux 根据端口查看系统进程

    1.lsof -i:端口号 2.netstat -tunlp|grep 端口号 注意不同用户下,查看的进程不同

  4. linux overcommit flag

    linux中有一个overcomit的配置,这个配置关系到进程在过多申请memory资源的时候,系统的表现(启发式允许,不检查,or 阻止) /proc/sys/vm/overcommit_memor ...

  5. npm无响应处理办法

    方法一:使用cnpm 1. 安装 `npm install cnpm -g` 2.设置使用淘宝镜像源 `npm install cnpm -g --registry=https://registry. ...

  6. Python快速学习02:基本数据类型 & 序列

    前言 系列文章:[传送门] 也就每点一点点的开始咯,“还有两年时间,两年可以学很多东西的” Python ['paɪθən]  n. 巨蛇,大蟒 基本数据类型 变量不需要声明 a=10 # int 整 ...

  7. Net使用RdKafka引发异常RdKafka.Internal.LibRdKafka 的类型初始值设定项引发异常

    在Net中VS2015用RdKafka组件开发消息发布和消费,引发下面的异常 RdKafka.Internal.LibRdKafka 的类型初始值设定项引发异常System.TypeInitializ ...

  8. 【原创】驱动加载之OpenService

    SC_HANDLE WINAPI OpenService( _In_ SC_HANDLE hSCManager, _In_ LPCTSTR lpServiceName, _In_ DWORD dwDe ...

  9. TensorFlow和深度学习-无需博士学位(TensorFlow and deep learning without a PhD)

    1. 概述 原文地址: TensorFlow and deep learning,without a PhD Learn TensorFlow and deep learning, without a ...

  10. SQL Server 2008 R2 下如何清理数据库日志文件

    废话不多说,直接上代码,清理后日志文件为1M USE [master] GO ALTER DATABASE [数据库名] SET RECOVERY SIMPLE WITH NO_WAIT GO ALT ...