Apache Cordova(phonegap)html viewport 不起做用问题

iOS解决方法html

 

在Cordova(phonegap)的config.xml中增长一行配置: java

<preference name="EnableViewportScale" value="true"/> android

实际上这行只是针对 iOS 项目的。web

通常是好用的,可是某些版本的 Cordova(phonegap)会出现 bug,Android 设备出现问题。apache

 

建议在 Cordova 建立工程的目录下的 config.xml 文件也加上,方便之后用命令编译。app

android 解决方法ide

MainActivity.java 类this

package com.easycloud.waiter;

import android.os.Bundle;
import android.webkit.WebView;
import org.apache.cordova.*;

public class MainActivity extends CordovaActivity
{
    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        // Set by <content src="index.html" /> in config.xml
        loadUrl(launchUrl);

        //下面能让 Android 设备支持 viewport
        WebView webView = (WebView) this.appView.getView();
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setUseWideViewPort(true);
    }
}

不要忘记引包。插件

 

注意:若是 使用了 cordova-plugin-crosswalk-webview 插件时, 若是出现这个问题,须要在插件内部修复。code

/YourProject/platforms/android/src/org/crosswalk/engine/XWalkWebViewEngine.java

找到下面代码:

private void initWebViewSettings() {
        webView.setVerticalScrollBarEnabled(false);

        //添加这样的代码
        webView.getSettings().setLoadWithOverviewMode(true);
        webView.getSettings().setUseWideViewPort(true);
        //修改结束

        boolean zOrderOnTop = preferences == null ? false : preferences.getBoolean(XWALK_Z_ORDER_ON_TOP, false);
        webView.setZOrderOnTop(zOrderOnTop);

        // Set xwalk webview settings by Cordova preferences.
        String xwalkUserAgent = preferences == null ? "" : preferences.getString(XWALK_USER_AGENT, "");
        if (!xwalkUserAgent.isEmpty()) {
            webView.setUserAgentString(xwalkUserAgent);
        }
        
        String appendUserAgent = preferences.getString("AppendUserAgent", "");
        if (!appendUserAgent.isEmpty()) {
            webView.setUserAgentString(webView.getUserAgentString() + " " + appendUserAgent);
        }
        
        if (preferences.contains("BackgroundColor")) {
            int backgroundColor = preferences.getInteger("BackgroundColor", Color.BLACK);
            webView.setBackgroundColor(backgroundColor);
        }
    }
相关文章
相关标签/搜索