Android WebView不尊重缩放比例

我有一个WebView ,我正在尝试在加载页面时将比例缩放到一定百分比。 该软件的iPhone版本使用HTML元标记:

<meta name="viewport" content="width=320, initial-scale=0.95, maximum-scale=2.0, user-scalable=1"> 

由于Android的WebView似乎不尊重这个标签,我使用setInitialScale()对百分比进行了硬编码。 但是,WebView只是无视此方法调用。 不pipe我input的数字是100%。

想法?

更新:它不工作在模拟器,我的Droid(摩托罗拉),或我的G1(macros达电)。

Solutions Collecting From Web of "Android WebView不尊重缩放比例"

一些HTC设备有WebView问题,试试这个片段!

 import java.lang.reflect.Method; import java.lang.reflect.InvocationTargetException; myWebView = new WebView(this); myWebView.getSettings().setLoadsImagesAutomatically(true); myWebView.getSettings().setJavaScriptEnabled(true); myWebView.getSettings().setBuiltInZoomControls(true); myWebView.setInitialScale(100); try { Method m = myWebView.getClass().getMethod("setIsCacheDrawBitmap", boolean.class); if (m != null) { m.invoke(myWebView, false); myWebView.getSettings().setLayoutAlgorithm(WebSettings.LayoutAlgorithm.NORMAL); } } catch (NoSuchMethodException e) { } catch (IllegalAccessException e) { } catch (InvocationTargetException e) { } myWebView.loadUrl("http://www.stackoverflow.com"); 

你是否为你的webview启用了缩放支持?

  WebSettings webSettings = mywebView.getSettings(); webSettings.setSupportZoom(true); 

下面的代码帮助我,当我没有回应。 值得一试:

 mywebview.setWebViewClient(new WebViewClient()); mywebview.getSettings().setSupportZoom(true) ; mywebview.getSettings().setUseWideViewPort(true) ; mywebview.setInitialScale(1) ; mywebview.loadUrl(sURL); 

你正在运行什么版本? 似乎2.0和以下有这个问题,但在2.1中得到解决。

可以看到几个选项。

1。 你的代码可能有问题了。 这是最简单的代码,我可以告诉它适用于我。 内容被缩放。

 WebView webview1 = (WebView) findViewById(R.id.webview1); webview1.setInitialScale(30); webview1.loadUrl("http://stackoverflow.com"); 

所以请发布你的代码。 所有与WebViewconfiguration相关的代码。 我在仿真器2.2上testing

2。 可能有你testing的url有问题。 你可以testing“ http://stackoverflow.com ”,因为我testing它,它的缩放罚款。

3。 也许我们使用不同的SDK。 你build什么SDK? 我的意思是你在default.properties中的目标是什么? AndroidManifest.xml中的用途是什么?

这是一个简单的testing,对我来说工作正常http://open-pim.com/tmp/WebViewTest.zip 。 你也可以试试。

如果我使用分号(;)而不是逗号(,)分隔参数,则meta标签适用于我。 我以前用过这个:

 <meta name="viewport" content="initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" /> 

至less在浏览器中是有效的。 我不确定WebView ,但可能值得一试。