字体大小在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