要禁用ViewGroup中所有子项上的所有触摸事件,可以使用以下方法:
public static void disableTouchEvents(ViewGroup viewGroup) {
for (int i = 0; i< viewGroup.getChildCount(); i++) {
View child = viewGroup.getChildAt(i);
child.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
return true; // 返回true表示消耗触摸事件,不会传递给子视图
}
});
if (child instanceof ViewGroup) {
disableTouchEvents((ViewGroup) child); // 递归处理子ViewGroup
}
}
}
ViewGroup viewGroup = findViewById(R.id.your_view_group);
disableTouchEvents(viewGroup);
这样,ViewGroup中的所有子项上的所有触摸事件都会被禁用。
领取专属 10元无门槛券
手把手带您无忧上云