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);