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

醉酒当歌 提交于 2019-11-30 21:31:20

iOS解决方法

 

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

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

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

一般是好用的,但是某些版本的 Cordova(phonegap)会出现 bug,Android 设备出现问题。

 

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

android 解决方法

MainActivity.java 类

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 插件时, 如果出现这个问题,需要在插件内部修复。

/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);
        }
    }

 

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!