关于Android中ExpandableListView子项是Button控件而单击事件没有响应的问题
嗯,第一次发文章,请多多指教。
好的,正文开始:
ExpandableListView控件的单击事件的要求大多数大神都已经说过了
1. BaseExpandableListAdapter的重写方法isChildSelectable必须为true。
2.ExpandableListView控件实现ExpandableListView.OnChildClickListener接口,绑定单击事件。
3.当ExpandableListView的子项是Button,CheckBox等本身聚焦的控件,将控件的setFocusable方法设为false,禁用控件的聚焦
上面的内容是和大神们一样的。
说点我自己实验的东西吧
1.ExpandableListView的子项是本身具有聚焦的控件时,比如Button控件,如果ExpandableListView子项单击事件没有成功,禁用setFocusable后还是没有成功,那就是Button本身的单击事件成功运行了,而不是控件本身的聚焦问题,所以这时候应该将setClickable设为false,就可以了
实验代码图片
结果
从上面的三张图可以看出ExpandableListView单击事件并没有运行,而是Button的单击事件运行了,所以这跟Button的焦点本身没有问题
下面设Button的setClickable为false,图片如下
从上面的实验结果来看是因为点击时点击的是Button而不是ExpandableListView的子项,所以响应的自然是Button的OnClickListener,而不是ExpandableListView的OnChildClickListener,这时候设Button的setClickable为false,点击的自然ExpandableListView本身的子项,而不是Button。
哭,感觉还是没有说好,请不要喷的太厉害,有问题的地方请多多指教(感觉还是没有把重点把握好)。