【问题标题】:font size different on ios and androidios和android字体大小不同
【发布时间】:2012-03-11 07:11:42
【问题描述】:

在 Android 上的 web 视图中,我加载了一个包含 HTML5 画布的 html 文件。将文本写入画布时,它非常小。如果我在 PC 浏览器甚至 IOS 上的 Web 视图中加载相同的 html 文件,它看起来是正确的。据我所知,我已禁用缩放,并且画布正在填充整个 Web 视图。我希望字体大小与在其他浏览器中加载时相同。有什么想法吗?

在html文件的头部,视口声明为:

<meta name='viewport' content='target-densitydpi=device-dpi,initial-scale=1.0,user-scalable=no'/>

在html文件的正文中,画布被声明为:

<canvas id='rtmc_canvas' style='position:relative; left:0px; top:0px;'/>

页面加载后,我动态调整画布填满屏幕。

【问题讨论】:

    标签: android android-webview


    【解决方案1】:

    当您以特定方式声明视口时,您将密度设置为 1.0 并告诉 Android 的 WebView 根本不要缩放任何东西。您可以删除该视口声明,这将导致图像和字体被缩放,或者您可以根据用户正在运行您的应用程序的 Android 设备修改 WebView 的文本大小设置。我假设你想做后者。

    您需要先计算设备的密度。你可以用这段代码做到这一点:

    float density = getResources().getDisplayMetrics().density;
    

    然后你可以调整字体大小的密度。

    如果密度为 1.0,则为中密度 (mdpi),>= 1.5 为高密度 (hdpi),>= 2.0 为超高密度 (xhdpi)。

    如果您使用的是 ICS,那么它有一个很好的 WebView API:

    webView.getSettings().setTextZoom(100 * density);
    

    如果您使用的是 ICS 之前的设备,则必须使用 if/else 语句检查上述密度,然后使用:

    if (density < 1.5) {
        // mdpi:
        webView.getSettings().setTextSize(WebSettings.TextSize.NORMAL);
    } else if ((density >= 1.5) && (density < 2.0)) {
        // hdpi:
        webView.getSettings().setTextSize(WebSettings.TextSize.LARGER);
    } else {
        // xhdpi:
        webView.getSettings().setTextSize(WebSettings.TextSize.LARGEST);
    }
    

    或者更好的是,您可以通过检查 Build.VERSION.SDK_INT 将这两个封装在 if ICS/else pre-ICS 中。

    这里有一些关于密度的进一步阅读:http://developer.android.com/guide/practices/screens_support.html

    【讨论】:

    • 感谢您的精彩解释。
    猜你喜欢
    • 2021-09-20
    • 2012-11-26
    • 2015-03-20
    • 1970-01-01
    • 2016-05-03
    • 2016-11-07
    • 1970-01-01
    • 2014-02-13
    • 2021-06-05
    相关资源
    最近更新 更多