如何在Android中停止WebView的INTERNAL滚动?

时间:2015-01-07 12:42:00

标签: android html css webview scroll

我的应用程序中有一个WebView,其中包含HTML内容,HTML内容的大小大于WebView的大小。当用户将他/她的手指拖到其上时,由于哪些内容在其内部滚动。我想停止内容滚动正在发生内容。

到目前为止我已经尝试过的事情:

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

并在CSS中:

overflow : hidden !important;

请为除了禁用手指拖动(黑客)for webview之外建议解决方案,因为这会影响我的其他功能,如下所示:

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

1 个答案:

答案 0 :(得分:4)

在您的网页视图中添加一个包装所有内容的容器,位于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扩展以满足其内容,因此它总是认为滚动还有更多内容至。这样做是将正文重置为WebView的大小,然后使用容器使主体不会扩展到WebView以外的内容。

希望有所帮助。