在Android Webview中使用元视口宽度

在Android Webview中使用元视口宽度,android,android-webview,android-browser,Android,Android Webview,Android Browser,我想使用viewport标记将html内容适配到Web视图中 <meta name='viewport' content='width=640'/> 这在Chrome浏览器中似乎可以正常工作,但不能扩展到WebView中。我做了一个简化的测试活动: public class MyActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) {

我想使用viewport标记将html内容适配到Web视图中

<meta name='viewport' content='width=640'/>

这在Chrome浏览器中似乎可以正常工作,但不能扩展到WebView中。我做了一个简化的测试活动:

public class MyActivity extends Activity {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //--------------------------------------------------
        // Create a simple html page including viewport tag.
        //--------------------------------------------------

        String html = "<!DOCTYPE html>" +
                "<html>" +
                "<head>" +
                "<meta name='viewport' content='width=640'/>" +
                "<title>Viewport Test</title>" +
                "</head>" +
                "<body style=\"margin: 0px;\">" +
                "<div style=\"width: 600px; height: 600px; border: 20px solid green; background-color: red;\"></div>" +
                "</body>" +
                "</html>";

        //-----------------------------------
        // Place html in WebView.
        //-----------------------------------

        WebView webView = new WebView(this);

        webView.loadData(html, "text/html", "utf-8");

        setContentView(webView);

        //-----------------------------------
        // Launch Chrome with the same html.
        //-----------------------------------

        Intent intent = new Intent(Intent.ACTION_VIEW);

        intent.setComponent(ComponentName.unflattenFromString("com.android.chrome/com.android.chrome.Main"));

        intent.setData(Uri.parse("data:text/html;charset=utf-8;base64," + Base64.encodeToString(html.getBytes(), Base64.NO_WRAP)));

        startActivity(intent);
    }
}
公共类MyActivity扩展活动{
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
//--------------------------------------------------
//创建包含视口标记的简单html页面。
//--------------------------------------------------
字符串html=“”+
"" +
"" +
"" +
“视口测试”+
"" +
"" +
"" +
"" +
"";
//-----------------------------------
//在WebView中放置html。
//-----------------------------------
WebView WebView=新的WebView(此);
加载数据(html、“文本/html”、“utf-8”);
setContentView(网络视图);
//-----------------------------------
//使用相同的html启动Chrome。
//-----------------------------------
意向意向=新意向(意向.行动\视图);
setComponent(ComponentName.unflattenFromString(“com.android.chrome/com.android.chrome.Main”);
setData(Uri.parse(“数据:text/html;charset=utf-8;base64,”+base64.encodeToString(html.getBytes(),base64.NO_WRAP));
星触觉(意向);
}
}
有人能解释一下原因,或者提出解决办法吗

好的,您必须使用:

    WebSettings settings = webView.getSettings();
    settings.setLoadWithOverviewMode(true);
    settings.setUseWideViewPort(true);
但是,如果像这样设置user scalable=0,它也会中断:

    <meta name='viewport' content='width=640, user-scalable=0'/>

出于某种原因,这似乎对棉花糖不起作用……你知道吗?