关于Android中ExpandableListView子项是Button控件而单击事件没有响应的问题

来源:互联网 发布:socket io 知乎 编辑:程序博客网 时间:2024/06/05 14:23

嗯,第一次发文章,请多多指教。

好的,正文开始:

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。

哭,感觉还是没有说好,请不要喷的太厉害,有问题的地方请多多指教(感觉还是没有把重点把握好)。


阅读全文
0 0
原创粉丝点击