当向下滚动WebView时,它会自动向上滚动。

4
在 Web 视图中,当我将页面向下滚动一点时,有些页面会自动向上滚动,但不是所有页面。为什么会出现这种情况,有什么解决方法?
以下是 XML 代码:
<android.support.design.widget.CoordinatorLayout android:id="@+id/nonVideoLayout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    >
<android.support.v4.widget.SwipeRefreshLayout
    android:id="@+id/swipeContainer"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:layout_behavior="@string/appbar_scrolling_view_behavior"
    >
    <WebView
        android:id="@+id/webView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         />
</android.support.v4.widget.SwipeRefreshLayout>
</android.support.design.widget.CoordinatorLayout>

这是我的代码,您可以检查一下。

 protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web_view);
        bindLayout();
        mySwipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                webView.reload();
            }
        });
        CookieManager.getInstance().setCookie(url, cookie);
        webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setUseWideViewPort(true);
        ProgressDialogHelper.showProgress(WebViewActivity.this);
        webView.setWebViewClient(new WebViewClient(){

            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                    view.loadUrl(url);



                return true;
            }

            @Override
            public void onPageFinished(WebView view, final String url) {

                mySwipeRefreshLayout.setRefreshing(false);
            }
        });

            webView.loadUrl(url);

    }

这是我的Java代码,我把cookie也设置到了web视图中,并且我还设置了层类型。我查找了一下,每个人都说要设置层类型,然后这个问题就解决了,但它并没有解决。


webView.getSettings().setLoadWithOverviewMode(true); 使用上述代码的特定原因是什么? - Aniruddh Parihar
去掉这个后问题仍然存在。 - Asad Yasin
等一下,让我先检查一下。 - Aniruddh Parihar
我甚至删除了下拉刷新的小部件,但我仍然得到相同的结果。 - Asad Yasin
webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); webView.getSettings().setLoadWithOverviewMode(true); webView.getSettings().setUseWideViewPort(true); 请将以上代码翻译为中文。 - Aniruddh Parihar
显示剩余4条评论
3个回答

1
尝试这个。
final WebSettings settings = mWebView.getSettings();
settings.setDomStorageEnabled(true);
settings.setJavaScriptEnabled(true);
mWebView.setVerticalScrollBarEnabled(false);

CookieManager.getInstance().setCookie(url, cookie); webView.setLayerType(View.LAYER_TYPE_SOFTWARE, null); webView.getSettings().setLoadWithOverviewMode(true); webView.getSettings().setUseWideViewPort(true); - Momen Zaqout
移除 .setLayerType(WebView.LAYER_TYPE_SOFTWARE, null); 对所有内容都没有问题。 - Ucdemir

0

只需要移除

webView.setLayerType(WebView.LAYER_TYPE_SOFTWARE, null);

所有其他都可以


0

在AndroidManifest.xml中尝试以下方法

应用程序活动标签中设置android:hardwareAccelerated="true"


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接