【问题标题】:WebView wrap-contentWebView 包装内容
【发布时间】:2010-12-31 18:20:25
【问题描述】:

是否可以在 WebView 中加载 URL 并调整其大小以适应屏幕?我的意思是我想让网页变小,这样用户就不需要滚动了。这可能吗?

【问题讨论】:

    标签: android webview


    【解决方案1】:

    您也可以尝试设置相同的布局算法。它对我有用

    webview.getSettings().setLayoutAlgorithm(LayoutAlgorithm.SINGLE_COLUMN);
    

    【讨论】:

    • 这仍然在低于 2.2 的 android os 版本上崩溃。 code.google.com/p/android/issues/detail?id=5024
    • 这是唯一对我有用的东西,因为它实际上使页面适合内容。其他一些解决方案在技术上也可以工作,但有时您会得到一个加载的页面,该页面被不必要地缩小,内容周围有额外的空间。需要注意的一件事是 LayoutAlgorithm 在 2.2 之后的版本中已弃用,但随后在 4.0 中未弃用。话虽如此,它应该仍然可以在两者之间的 sdks 中工作。
    • 请不要使用这个答案。这在最新的网络视图代码中已被弃用
    【解决方案2】:

    将初始比例设置为 1。然后它会放大以填满屏幕。尚未测试它如何在非常高大的网站(例如包含大量 cmets 的博客文章)上运行,但它可以在 Droid X 和具有标准网页的 HTC Aria 上运行。

    WebView.setInitialScale(1);
    

    我将继续使用不同的网页进行测试,但到目前为止,这是我解决此问题的最佳解决方案。

    编辑:在 Droid X 和 Aria 上都用过长的网页进行了测试,并在两者上都取得了积极的结果。将初始比例设置为 0 似乎会关闭整个过程,导致初始比例为 100。我对这些结果感到满意,希望这有助于其他人解决这个问题。

    【讨论】:

    • 我遇到了一个非常相似的问题,这个解决方案最终对我有用。谢谢!
    【解决方案3】:
    wb.getSettings().setLoadWithOverviewMode(true);
    wb.getSettings().setUseWideViewPort(true);
    

    【讨论】:

      【解决方案4】:
      webview_settings.setLoadWithOverviewMode(true);
      webview_settings.setUseWideViewPort(true);
      webview_settings.setBuiltInZoomControls(true);
      

      【讨论】:

        【解决方案5】:

        您是否尝试过只调用WebView.zoomOut() 直到它返回false

        另外,我要指出,您要使用的这种技术实际上依赖于网页非常短。如果页面很长并且您缩小以使其完全适合屏幕,则用户将需要非常好的视力! ;)

        【讨论】:

        • 嘿thanx...还没有检查过,但我想我会在这里完成某些手续后尝试一下...非常感谢...
        【解决方案6】:

        通过执行以下操作,我能够将整个页面包含在我的视图中。首先将宽度和高度设置为wrap_content。然后将初始比例设置为这样的:

        WebView webview = (WebView) currentActivity.findView(R.layout.web_view, R.id.webview);
        webview.setInitialScale(1);
        

        我发现我可以通过执行以下操作将宽度保持在显示可读字体所需的最小宽度,然后每次沿 y 坐标滚动。首先将高度和宽度都设置为 wrap_content。然后在您的代码中将缩放密度设置为远,如下所示:

        WebView webview = (WebView) currentActivity.findView(R.layout.web_view, R.id.webview);
        webview.getSettings().setDefaultZoom(ZoomDensity.FAR);
        

        这可能是大多数时候更好的解决方案。考虑一下如果您完整显示以下网页,字体会有多小:

        【讨论】:

          【解决方案7】:
          webview.setInitialScale(number);
          

          “数字”越高,您的页面放大得越多。从较小的数字(如 10)开始,然后根据口味调整

          【讨论】:

            【解决方案8】:

            使用此代码根据屏幕调整 webview 的大小。

            setScrollContainer(false);

            【讨论】:

              【解决方案9】:

              我让它在一个对话框中使用 WRAP_CONTENT 来处理 WebView 的两个维度,不幸的是,当网页变得太大时,webview 会将我所有的其他小部件推离屏幕。

              Android 的布局系统非常不直观!

              【讨论】:

              • 你不能这么说!您已经使用了 WRAP_CONTENT,如果您需要它保持相同的大小并且不根据网页的大小进行更改,那么为什么不定义它的高度和宽度……这将 AFAIK 解决您的问题!
              【解决方案10】:

              如前所述,用户不希望缩小太多,因为它会降低内容的易读性。

              我建议尝试设置缩放控件,但是,我不知道它是否可以在 2.1 中使用。

              webview.getSettings().setBuiltInZoomControls(true);
              

              希望这可以解决问题,因为您现在可以让用户控制更改缩放级别。

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2019-12-06
                • 2012-08-28
                • 2021-07-13
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                相关资源
                最近更新 更多