如何停止 Android 中 WebView 的内部滚动?

How to stop INTERNAL scrolling of WebView in Android?

我的应用程序中有一个 WebView,其中呈现了 HTML 内容,并且 HTML 内容的大小大于 WebView 的大小。由于当用户在其上拖动 his/her 手指时,内容会在其中滚动。我想阻止内容发生这种内部滚动。

这是我目前已经尝试过的方法:

WebView view = new WebView(context);  //context is of Activity
view.setHorizontalScrollBarEnabled(false);
view.setVerticalScrollBarEnabled(false);
view.setScrollContainer(false);

并在 CSS 中为:

overflow : hidden !important;

请提出解决方案,除了 禁用手指拖动 (Hack) for webview 因为这会干扰我的其他功能,如下所示:

@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
    if(motionEvent.getAction() == MotionEvent.ACTION_MOVE)
    {
        return true;
    }
  }

向您的 webview 添加一个容器,该容器包装您的所有内容并位于 body 元素的正下方,如下所示:

<body id="myBody">
  <div class="container">
    <!-- All your content goes in this new div.container -->
  </div>
</body>

然后,将此 CSS 添加到您的页面:

body {
  height: 100%;
  width: 100%;
  pointer-events: none;
}
div.container {
  overflow: hidden!important;
  height: 100%;
  width: 100%;
}

问题是尽管有溢出规则,WebView 似乎忽略了 body 上的滚动,并且由于 body 扩展以满足其内容,它总是认为还有更多内容需要滚动到。这是在将 body 重置为 WebView 的大小,然后使用容器来防止 body 扩展到 WebView 之外并包含更多内容。

希望对您有所帮助。