Disable scrolling in webview? Disable scrolling in webview? android android

Disable scrolling in webview?


Here is my code for disabling all scrolling in webview:

  // disable scroll on touch  webview.setOnTouchListener(new View.OnTouchListener() {    @Override    public boolean onTouch(View v, MotionEvent event) {      return (event.getAction() == MotionEvent.ACTION_MOVE);    }  });

To only hide the scrollbars, but not disable scrolling:

WebView.setVerticalScrollBarEnabled(false);WebView.setHorizontalScrollBarEnabled(false);

or you can try using single column layout but this only works with simple pages and it disables horizontal scrolling:

   //Only disabled the horizontal scrolling:   webview.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);

You can also try to wrap your webview with vertically scrolling scrollview and disable all scrolling on the webview:

<ScrollViewandroid:layout_width="fill_parent"android:layout_height="fill_parent"android:scrollbars="vertical"    >  <WebView    android:id="@+id/mywebview"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    android:scrollbars="none" /></ScrollView>

And set

webview.setScrollContainer(false);

Don't forget to add the webview.setOnTouchListener(...) code above to disable all scrolling in the webview. The vertical ScrollView will allow for scrolling of the WebView's content.


Making the WebView ignore motion events is the wrong way to go about it. What if the WebView needs to hear about these events?

Instead subclass WebView and override the non-private scroll methods.

public class NoScrollWebView extends WebView {    ...    @Override    public boolean overScrollBy(int deltaX, int deltaY, int scrollX, int scrollY,                                 int scrollRangeX, int scrollRangeY, int maxOverScrollX,                                 int maxOverScrollY, boolean isTouchEvent) {        return false;    }    @Override    public void scrollTo(int x, int y) {        // Do nothing    }    @Override    public void computeScroll() {        // Do nothing    }}

If you look at the source for WebView you can see that onTouchEvent calls doDrag which calls overScrollBy.


I don't know if you still need it or not, but here is the solution:

appView = (WebView) findViewById(R.id.appView); appView.setVerticalScrollBarEnabled(false);appView.setHorizontalScrollBarEnabled(false);