WebView中的缩放比例不正确

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了WebView中的缩放比例不正确相关的知识,希望对你有一定的参考价值。

我有一个建立在PrimeFaces之上的网站。我的问题是WebView上的内容和图像看起来比Chrome上的要大。我应该怎么做才能使WebView上的渲染与Chrome的渲染相同?

扩展似乎没有帮助,因为该网站具有响应式设计。我也尝试过wrap_content而不是fill_parent但没有成功。

更新1:以下内容无效。我已将它们从下面的代码中排除,以保持最小化。

  • WebViewClient
  • ChromeViewClient
  • setLoadWithOverviewMode(true)
  • setUseWideViewPort(true)

更新2:setInitialScale()无效。

my activity.Java

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    webView = (WebView) findViewById(R.id.web_engine);
    webView.setWebViewClient(new WebViewClient());
    webView.getSettings().setjavascriptEnabled(true);
    if (savedInstanceState == null) {
        webView.loadUrl("http://www.primefaces.org/showcase/mobile/index.xhtml");
    }
}

main.xml中

<RelativeLayout xmlns:a="http://schemas.android.com/apk/res/android"
            a:layout_width="fill_parent"
            a:layout_height="fill_parent"
            a:background="#ffffff"
            a:orientation="vertical" >

<WebView a:id="@+id/web_engine"
         a:layout_width="fill_parent"
         a:layout_height="fill_parent"
/>

答案

尝试:

webView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING);
webView.getSettings().setSupportZoom(true);

这里提到:http://developer.android.com/guide/webapps/migrating.html

更具体地来说:http://developer.android.com/reference/android/webkit/WebSettings.LayoutAlgorithm.html#TEXT_AUTOSIZING

完整代码:

mWebView = (WebView) mLayoutMain.findViewById(R.id.webview_main);
mWebView.setWebViewClient(new WebViewClient(){
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);
        return false;
    }
});
mWebView.getSettings().setJavaScriptEnabled(true);
mWebView.getSettings().setUseWideViewPort(true);
mWebView.getSettings().setLoadWithOverviewMode(true);
mWebView.getSettings().setBuiltInZoomControls(true);
mWebView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.TEXT_AUTOSIZING);
mWebView.getSettings().setSupportZoom(true);
mWebView.loadUrl("http://www.primefaces.org/showcase/mobile/index.xhtml");
另一答案

首先,我建议您在不同的移动浏览器上测试您的应用程序。如果同样的问题,请看下面:

浏览器和您的应用程序之间的区别可能是因为您在使用setUseWideViewPort WebSetting为true时出错。

检查以下链接:

  1. why does my font-size look so much larger in the android webview object than when viewed in the android browser?
  2. Android WebView text zoom for different screens and os version
  3. WebView text size
另一答案

我有一个类似的问题,问题是系统字体大小(设置 - >显示 - >字体大小)影响WebView中的字体大小,但不影响浏览器中的字体大小。

当我使用cordova时,我用cordova plugin解决了这个问题,请参阅this answer

查看插件代码,它在Android中执行以下操作以重置字体大小:

mWebView.getSettings().setTextZoom(100);

或(前ICS):

mWebView.getSettings().setTextSize(WebSettings.TextSize.NORMAL);
另一答案

我在移动铬和应用程序中尝试了http://www.primefaces.org/showcase/mobile/index.xhtml,它们看起来都很相似

在申请中

在Chrome中

我没有看到任何问题。您是否有可能在某些特定的Android版本中获得差异?我在4.4.4验证了它

另一答案

对于匹配chrome或网站而不进行任何调整大小的字体大小,只需执行webSettings.setMinimumFontSize(1);

亲切的问候Ramin

以上是关于WebView中的缩放比例不正确的主要内容,如果未能解决你的问题,请参考以下文章

Swift UIWebView 初始缩放比例

解决WebView无法缩放页面的问题

单击 WebView 中的表单字段时禁用缩放?

Python质心中的KMeans位置不正确,我如何“取消缩放”它们?

如何设置 webview 的初始缩放/宽度

GetScaleFactorForMonitor winapi 是不是返回不正确的比例因子?