【问题标题】:WebView won't scroll in Android 2.xWebView 不会在 Android 2.x 中滚动
【发布时间】:2013-06-11 19:34:36
【问题描述】:

我的 WebView 有问题。 我在这个 WebView 中打开一个网页,它不会在 Android 2.x 中滚动,但它会在 Android 3.x+ 中滚动。

知道我能做些什么来解决这个问题吗?

这是我用于此 WebView 的配置:

wView = (WebView) findViewById(R.id.webView1);
wView.getSettings().setJavaScriptEnabled(true);
wView.setHorizontalScrollBarEnabled(true);

在布局中:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="#00000000"
    tools:context=".MainActivity" 
    android:orientation="vertical">

    <WebView
        android:id="@+id/webView1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:scrollbars="horizontal" />

</LinearLayout>

【问题讨论】:

  • 您尝试的所有网站都是这种情况,还是只是这个特定页面?
  • 可能是旧浏览器不支持的站点的 javascript 或 css 中的某些内容。尝试在旧设备上使用本机浏览器进行测试。它在那里工作吗?我感觉这不是你的代码...
  • 肯是绝对正确的。如果这只发生在一个站点上,那么它是站点,而不是 WebView。
  • 但是,如果这不是我的站点,我该如何修复它以使其继续工作?比如下载站点并在设备上编辑 HTML 代码...?
  • 您可以发布您遇到问题的网址吗?

标签: java android android-webview


【解决方案1】:

旧版 Android 浏览器不支持该网站的 css 或 javascript 中的某些内容,它与您的代码无关。

这有点过于宽泛,无法明确回答 - 您需要测试您的网站在不同浏览器上的合规性。如果您在网站上使用任何特定库,则需要检查它们的兼容性。

以下是一些可能有帮助的链接:

【讨论】:

  • 我可以删除我可以滚动的不受支持的功能吗?有一些元素位置固定;这可能是问题所在。
  • 当然。真正唯一的选择是希望您有能力更改站点,您必须尝试并犯一些错误。从这里无法确定是什么原因造成的!
  • 如果这不是我的站点,我如何在设备上编辑 HTML?
  • 是的,但这不会很简单。实现您自己的 WebViewClient 或先使用 HTTPClient 获取 HTML stackoverflow.com/questions/3479833/…
  • 自己的WebViewClient可以修改HTML吗?
【解决方案2】:

如果你还有问题

    WebView wv = (WebView) v.findViewById(R.id.webview);
    wv.getSettings().setSupportZoom(true);
    wv.getSettings().setBuiltInZoomControls(true);
    wv.getSettings().setJavaScriptCanOpenWindowsAutomatically(true);
    WebSettings settings = wv.getSettings();        
    settings.setUseWideViewPort(true);
    settings.setJavaScriptEnabled(true);
    settings.setSupportMultipleWindows(true);
    settings.setJavaScriptCanOpenWindowsAutomatically(true);
    settings.setLoadsImagesAutomatically(true);
    settings.setLightTouchEnabled(true);
    settings.setDomStorageEnabled(true);
    settings.setLoadWithOverviewMode(true);
    wv.loadUrl("http://www.google.com");

如果您想在页面仍在加载时显示 ProgressBar 使用

     ProgressBar pb = (ProgressBar).findViewById(R.id.webview_progressBar1);

     wv.setWebViewClient(new WebViewClient() {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, String url) {
                return super.shouldOverrideUrlLoading(view, url);
            }

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

                super.onPageFinished(view, url);

                pb.setVisibility(View.INVISIBLE);

            }

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {

                super.onPageStarted(view, url, favicon);

                pb.setVisibility(View.VISIBLE);

            }

        });

希望这会有所帮助...

【讨论】:

    【解决方案3】:

    如果你尝试设置这个会怎样:

    wView.getSettings().setUseWideViewPort(true);
    

    【讨论】:

      【解决方案4】:

      您可以尝试将您的 webview 包含在滚动视图中:

      <LinearLayout ...... > <HorizontalScrollView ..... > <WebView .... /> </HorizontalScrollView> </LinearLayout>

      【讨论】:

        【解决方案5】:

        修改您的 XML 以改用 ScrollView。会工作的。

        <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#00000000"
        tools:context=".MainActivity" 
        android:orientation="vertical">
        
            <ScrollView 
            android:layout_width="match_parent"
            android:layout_height="match_parent"
                <WebView
                android:id="@+id/webView1"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:scrollbars="horizontal" />
            </ScollView>
        </LinearLayout>
        

        【讨论】:

          【解决方案6】:

          3x+有很多改进,android webview的限制太多了 http://androiddeveloperuser.blogspot.in/2011/05/webview-part-1-capabilities-and.html

          在这里,我将介绍一篇关于限制和优势的 android 博客中所写的简短内容

          有很多事件是无法拦截的,有 限制哪些行为可以重载,这限制了 自定义此组件并更改默认行为 这个组件很难。

          【讨论】:

            猜你喜欢
            • 2012-11-07
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-09-09
            相关资源
            最近更新 更多