gpt4 book ai didi

android - ios和安卓字体大小不一样

转载 作者:太空宇宙 更新时间:2023-11-03 13:33:56 25 4
gpt4 key购买 nike

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

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

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

在 html 文件的正文中, Canvas 声明为:

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

页面加载后,我动态调整 Canvas 以填充屏幕。

最佳答案

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

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

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

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

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

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

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

如果您使用的是 pre-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

关于android - ios和安卓字体大小不一样,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9625475/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com