前言
此问题多半是加入了Button等可以接收单击事件和可以接收焦点的控件导致。
ExpandableListView控件的单击事件的要求大多数大神都已经说过了
1.BaseExpandableListAdapter的重写方法isChildSelectable必须为true。
2.ExpandableListView控件实现ExpandableListView.OnChildClickListener接口,绑定单击事件。
3.当ExpandableListView的子项是Button,CheckBox等本身聚焦的控件,将控件的setFocusable方法设为false,禁用控件的聚焦
自测内容
ExpandableListView的子项是本身具有聚焦的控件时,比如Button控件,如果ExpandableListView子项单击事件没有成功,单独禁用setFocusable后或者单独禁用setClickable还是没有成功,那就需要同时设置这两个属性为false就可以了
可在两处设置Focusable和Clickable
1.在自己的ExpandableListView的Adapter扩展类中的getChildView方法中添加
childViewHolder.btnChild.setFocusable(false);
childViewHolder.btnChild.setClickable(false);
2.在xml子布局中的Button属性中添加
<Button
android:id="@+id/btnNoise"
android:layout_width="64dp"
android:layout_height="64dp"
android:layout_marginLeft="5dp"
android:layout_marginTop="5dp"
android:layout_marginRight="5dp"
android:layout_gravity="center_horizontal"
android:focusable="false"
android:clickable="false"
/>
注意:以防万一,请将子布局中的控件全部设置这两个属性为false
解决ExpandableListView点击事件冲突
本文介绍了解决Android中ExpandableListView与Button等控件的点击事件冲突的方法。通过设置setFocusable与setClickable为false,确保ExpandableListView正确响应点击事件。
1万+

被折叠的 条评论
为什么被折叠?



