我的Android进阶之旅------>Android中ListView中嵌套(ListView)控件时item的点击事件不起作的问题解决方法

Posted gavanwanggw

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了我的Android进阶之旅------>Android中ListView中嵌套(ListView)控件时item的点击事件不起作的问题解决方法相关的知识,希望对你有一定的参考价值。

 技术分享

开发中经常须要自定义Listview,去继承BaseAdapter,在adapter中依照需求进行编写,问题就出现了,可能会发生点击每个item的时候没有反应,无法获取的焦点。

假设你的自己定义ListViewItem中有Button、ImageButton或者Checkable的子类控件的话,那么默认focus是交给了子控件,而ListView的Item能被选中的基础是它能获取Focus。

所以经常当点击item时变化的是子控件,item本身的点击没有响应。

这时候就能够使用descendantFocusability属性来解决,他能够设置一个控件怎样处理触摸事件,

该属性是当一个为view获取焦点时,定义viewGroup和其子控件两者之间的关系。

属性的值有三种:

android:descendantFocusability="blocksDescendants" //viewgroup会覆盖子类控件而直接获得焦点android:focusable="false"
android:descendantFocusability="beforeDescendants" //viewgroup会优先其子类控件而获取到焦点
android:descendantFocusability="afterDescendants"   //viewgroup仅仅有当其子类控件不须要获取焦点时才获取焦点

因此我们能够通过对Item Layout的根控件设置其android:descendantFocusability=”blocksDescendants”来解决。这样Item Layout就屏蔽了全部子控件获取Focus的权限,如此就能够顺利的响应onItemClickListener中的onItenClick()方法了。



 


                            ====================================================================================

  作者:欧阳鹏  欢迎转载,与人分享是进步的源泉!

  转载请保留原文地址http://blog.csdn.net/ouyang_peng

====================================================================================

技术分享

 







以上是关于我的Android进阶之旅------>Android中ListView中嵌套(ListView)控件时item的点击事件不起作的问题解决方法的主要内容,如果未能解决你的问题,请参考以下文章

我的Android进阶之旅------>怎样将Activity变为半透明的对话框?

我的Android进阶之旅------>Android中android:windowSoftInputMode的使用方法

我的Android进阶之旅------>Android关于Log的一个简单封装

我的Android进阶之旅------>Android嵌入图像InsetDrawable的使用方法

我的Android进阶之旅------>android中getLocationInWindow 和 getLocationOnScreen的差别

我的Android进阶之旅------>解决:Execution failed for task ':app:transformResourcesWithMergeJav