【问题标题】:Android WebView cannot be scrolled in particular deviceAndroid WebView 无法在特定设备上滚动
【发布时间】:2019-06-26 11:44:07
【问题描述】:

我阅读了一些关于这个问题的帖子(thisthisthis),但我的问题没有解决方案。

这是一个相当简单的 WebView 组件,它在 html 模板中加载 JSON 数据。独特的情况可能是它是 Activity 中的选项卡片段组件。

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:focusableInTouchMode="true">
    <WebView
        android:id="@+id/webView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:visibility="gone" />
    <view.BKProgressBar
        android:id="@+id/progressBar"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true" />
</RelativeLayout>

这是Java代码:

        webView = view.findViewById(R.id.webView);
        progressBar = view.findViewById(R.id.progressBar);

        webView.getSettings().setJavaScriptEnabled(true);
        webView.setVerticalScrollBarEnabled(true);

        webView.setWebViewClient(new WebViewClient() {
            public void onPageFinished(WebView view, String url) {
                webView.setVisibility(View.VISIBLE);
                progressBar.setVisibility(View.GONE);
            }
        });

        progressBar.setVisibility(View.GONE);
        webView.setVisibility(View.VISIBLE);


        webView.addJavascriptInterface(new WebAppInterface(getActivity()), "AndroidNativeWrapper");

        reloadJSON();

该设备是运行Android 8的华为型号ATU-L21。有人有同样的问题吗?

【问题讨论】:

  • 请尝试使用:setWebChromeClient 代替 setWebViewClient
  • @SaswataDas 我试过了,没用

标签: android webview


【解决方案1】:

试试这个

webView.getSettings().setLoadsImagesAutomatically(true);
webView.getSettings().setJavaScriptEnabled(true);
webView.getSettings().setPluginState(WebSettings.PluginState.ON);
webView.setScrollBarStyle(View.SCROLLBARS_INSIDE_OVERLAY);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setSupportZoom(true);
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setDisplayZoomControls(true);
webView.getSettings().setLoadWithOverviewMode(true);
webView.setVerticalScrollBarEnabled(true);
webView.setHorizontalScrollBarEnabled(true);
webView.getSettings().setUseWideViewPort(true);
webView.getSettings().setAllowFileAccess(true);
webView.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
webView.setWebChromeClient(new WebChromeClient());

【讨论】:

    【解决方案2】:

    事实证明,这是html 模板中的单行解决方案:

    html {
        overflow-y:auto;
    }
    

    感谢我的同事。我之前怀疑过这个,但我不愿意调试它。我希望它可以帮助别人。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-11-18
      • 2016-09-24
      • 1970-01-01
      • 1970-01-01
      • 2020-03-13
      • 2018-11-17
      • 1970-01-01
      • 2018-08-11
      相关资源
      最近更新 更多