其他分享
首页 > 其他分享> > 字体大小在iOS和Android上有所不同

字体大小在iOS和Android上有所不同

作者:互联网

Android上的网络视图中,我加载了一个包含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;'/>

页面加载后,我会动态调整画布以填充屏幕.

解决方法:

您将密度设置为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将这两者都包装在ICS / else之前的ICS中.

以下是有关密度的更多信息:http://developer.android.com/guide/practices/screens_support.html

标签:android-webview,android
来源: https://codeday.me/bug/20191101/1984821.html