Search code examples
androidandroid-webviewandroid-scrollandroid-scrollbar

Disable scrolling in webview?


Until now I have been an iPhone developer only and now I have decided to give Android a whirl. Something I haven't been able to figure out on Android is how to programmatically prevent scrolling in a WebView?

Something similar to iPhones prevention of the onTouchMove event would be great!


Solution

  • 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:

    <ScrollView
    android: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.