How to disable all click events of a layout?
You can pass View
for disable all child click event.
public static void enableDisableView(View view, boolean enabled) {
view.setEnabled(enabled);
if ( view instanceof ViewGroup ) {
ViewGroup group = (ViewGroup)view;
for ( int idx = 0 ; idx < group.getChildCount() ; idx++ ) {
enableDisableView(group.getChildAt(idx), enabled);
}
}
}
Here is a Kotlin extension function implementation of Parag Chauhan's answer
fun View.setAllEnabled(enabled: Boolean) {
isEnabled = enabled
if (this is ViewGroup) children.forEach { child -> child.setAllEnabled(enabled) }
}
Rather than iterating through all the children view, you can add this function to the parent Layout view
@Override
public boolean onInterceptTouchEvent(MotionEvent ev) {
return true;
}
This will be called before the onTouchEvent
for any child views, and if it returns true
, the onTouchEvent
for child views wont be called at all. You can create a boolean field member to toggle this state on and off if you want.
I would create a ViewGroup
with all the views that you want to enable/disable at the same time and call setClickable(true/false)
to enable/disable clicking.