在SO和互联网上有数百篇关于如何修复Android中视口缩放的帖子,我现在相当确定在Android 4.1上无法在Webview中设置初始比例。我正在构建一个Cordova(Phonegap)应用程序,在iPhone 3GS、4S和5以及运行iOS7的iPad 2和iOS6的3GS上,我已经很好地缩放了所有东西。我还将UI缩放到适合Moto G、LG Nexus 5、Google Nexus 5和Samsung Galaxy S4上,它们都运行Android 4.4。但是,在运行Android 4.1的Samsung Galaxy S2和S3 Mini上,我无法设置初始比例。HTML视口元标记在4.1或4.4上不起作用(在Chrome上可以,在WebView或默认浏览器中不行)。
然后我在4.4版本的Moto G上按预期进行缩放:
但是在Galaxy S2上运行完全相同的项目,却没有被缩放。
由于我的测试仅限于三星设备上的4.1版本或者在4.4版本上的一系列设备,所以如果有人能够在4.2或4.3上测试同样的内容,或是在4.1上的非三星设备,那将非常有帮助。
请问是否有人知道如何让Android 4.1遵守
<meta name="viewport" content="user-scalable=no, initial-scale=0.5, width=device-width, height=device-height, target-densitydpi=device-dpi" />
我用命令行创建了一个非常基础的Cordova项目,cordova create basicProject
。如果我在主Activity的onCreate方法中添加一些Java代码,特别是setInitialScale
方法:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
super.init();
// Set by <content src="index.html" /> in config.xml
super.loadUrl(Config.getStartUrl());
//super.loadUrl("file:///android_asset/www/index.html");
this.appView.setInitialScale( 50 );
}
然后我在4.4版本的Moto G上按预期进行缩放:
![通过setInitialScale(50)将初始缩放比例设置为0.5的Android 4.4 Moto G](https://istack.dev59.com/udTiF.webp)
![通过setInitialScale(50)将初始缩放比例设置为0.5的Android 4.1 Galaxy S2](https://istack.dev59.com/O16qs.webp)
请问是否有人知道如何让Android 4.1遵守
setInitialScale()
的规定?
document.body.style.zoom = 1 / window.devicePixelRatio
。 - Pete