之前在学习的时候遇到了好多小坑,好在网上好多前辈提供了很多解决方案,为了记得牢一些,也顺便把以前的一些东西总结一下。有点抱歉之前忘记记录那些参考链接,重新搜也认不大出之前看是哪一篇文章…大家把这篇文章当成转载的好了,以后一定记录好那些参考过的前辈文章链接。
一、item响应事件失效
ListView之类的容器控件大家都挺常用的,有时候可能会遇到这种情况,给容器设定好布局,创建好对应Adapter后,发现ListView里面的item响应事件失效了。
原因就是事件响应的焦点被布局里面某个控件获取了,被它所消费掉。Button,ImageButton,CheckBox这些子控件都会将焦点获取到,消费掉点击事件,所以当往ListView里面添多个Button控件后,点击item时变化的是子控件,item本身的点击事件没有响应。
解决方法:
在布局上利用descendantFocusability属性设置父类控件与子类控件之间关于焦点的处理。
该属性是当一个为view获取焦点时,定义ViewGroup和其子控件两者之间的关系。
属性的值有三种:
**beforeDescendants:viewgroup会优先其子类控件而获取到焦点
afterDescendants:viewgroup只有当其子类控件不需要获取焦点时才获取焦点
blocksDescendants:viewgroup会覆盖子类控件而直接获得焦点**
通常我们用到的是第三种,即在Item布局的根布局加上
Android:descendantFocusability=“blo