我有一个WebView,我试图在加载页面时将其缩放到某个百分比。该软件的iPhone版本使用HTML元标记:
<meta name="viewport" content="width=320, initial-scale=0.95, maximum-scale=2.0, user-scalable=1">
由于Android的WebView似乎不尊重该标记,因此我使用setInitialScale()对该百分比进行了硬编码。但是,WebView只是忽略了这种方法调用。不管我放在那里的数字是100%。
想法?
更新:它不能在模拟器,Droid(摩托罗拉)或我的G1(HTC)上运行。
答案 0 :(得分:5)
某些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");
答案 1 :(得分:1)
您是否为网络视图启用了缩放支持?
WebSettings webSettings = mywebView.getSettings();
webSettings.setSupportZoom(true);
答案 2 :(得分:1)
当我没有回应时,下面的代码帮助了我。值得一试:
mywebview.setWebViewClient(new WebViewClient());
mywebview.getSettings().setSupportZoom(true) ;
mywebview.getSettings().setUseWideViewPort(true) ;
mywebview.setInitialScale(1) ;
mywebview.loadUrl(sURL);
答案 3 :(得分:0)
答案 4 :(得分:0)
可以看到几个选项。
1。可能你的代码有问题。这是最简单的代码,我可以告诉它对我有用。内容已缩放。
WebView webview1 = (WebView) findViewById(R.id.webview1);
webview1.setInitialScale(30);
webview1.loadUrl("http://stackoverflow.com");
所以请发布您的代码。所有与WebView配置相关的代码。 我在模拟器2.2上测试
2。您测试的网址可能有问题。您可以测试“http://stackoverflow.com”,因为我测试它并且缩放得很好。
3。也许我们使用不同的SDK。您构建的SDK是什么?我的意思是default.properties中你的目标是什么?你在AndroidManifest.xml中使用了什么-ddk?
这是一个对我来说很好的简单测试http://open-pim.com/tmp/WebViewTest.zip。你也可以尝试一下。
答案 5 :(得分:0)
meta
标签适用于我,如果我用分号(;)而不是逗号(,)分隔参数。我以前用过这个:
<meta name="viewport" content="initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" />
它起作用,至少在浏览器中是这样。我不确定WebView
,但它可能值得一试。