I am looking for a method to disable touch on a WebView so user\'s are not able to click on html links but keep the zooming and scrolling functions of the WebView.
Here is my solution. It does not let a user trigger javascript click events
public class NonClickableWebView extends WebView {
private GestureDetectorCompat gestureDetector;
private boolean isSingleTap = false;
public NonClickableWebView(Context context) {
super(context);
gestureDetector = new GestureDetectorCompat(context, new GestureDetector());
}
public NonClickableWebView(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
gestureDetector = new GestureDetectorCompat(context, new GestureDetector());
}
public NonClickableWebView(Context context, AttributeSet attrs) {
super(context, attrs);
gestureDetector = new GestureDetectorCompat(context, new GestureDetector());
}
@Override
public boolean onTouchEvent(MotionEvent event) {
if (event.getAction() == MotionEvent.ACTION_DOWN) {
isSingleTap = false;
}
gestureDetector.onTouchEvent(event);
if (isSingleTap && event.getAction() == MotionEvent.ACTION_UP) {
return true;
}
return super.onTouchEvent(event);
}
private class GestureDetector extends android.view.GestureDetector.SimpleOnGestureListener {
@Override
public boolean onSingleTapUp(MotionEvent e) {
isSingleTap = true;
return false;
}
@Override
public boolean onSingleTapConfirmed(MotionEvent e) {
isSingleTap = true;
return false;
}
}
}