Android中怎么测量文字宽度
Android中怎么测量文字宽度,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
目前成都创新互联公司已为超过千家的企业提供了网站建设、域名、雅安服务器托管、网站托管、企业网站设计、左云网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
什么是绝对文本呢?
就是指那些字号、字体、粗细等属性不受在所运行的硬件设备上的 Android 系统的配置所影响文本。例如:自定义View时通过Canvas绘制出来的文本;
而相对文本在使用上就广泛很多了。例如直接用 TextView 展示的文本、网页上的文本、手机短信内容文本等。相对文本在字号、字体、粗细程度上除了受应用开发时的配置影响以外还会间接地受到系统设置的影响。例如在 Android 的系统设置 -- 显示 -- 字体大小 中的配置就会间接地影响到相对文本的显示效果。
这篇博文,就来记录一下这两种文本的测量长度的方法。
1、绝对文本长度的测量
绝对文本为了避免被系统配置影响到,通常都不使用 Android 自带的控件来绘制文本。
比较常见的绘制文本的方式是通过 Canvas 的 drawText() 方法。
绝对文本的长度的测量通常是借助 Paint 来完成的,代码也很简单:
final String txt = "冠状病毒是自然界广泛存在的病毒,因该病毒形态在电镜下观察类似王冠而得名。";Paint paint = new Paint();paint.setTextSize(15);float length = paint.measureText(txt);Logger.d(TAG, "txt length:" + length);
这种测量方式得到的结果值是不随系统显示字号的改变而改变的。
2、相对文本长度的测量
最简单的测量这种随系统配置而改变属性的文本的长度的方法就是借助于 Android 自身控件。这里贴出一种直接用 TextView 控件来测量的办法:
final String txt = "冠状病毒是自然界广泛存在的病毒,因该病毒形态在电镜下观察类似王冠而得名。";TextView tv = new TextView(this);tv.setTextSize(16);tv.setText(txt);TextPaint tp = tv.getPaint();float length = Layout.getDesiredWidth(tv.getText().toString(), 0, tv.getText().length(), tp);Logger.d(TAG, "txt length:" + length);Logger.d(TAG, "screen width:" + ScannerApplication.getInstance().getHardware().getAppWidth());((FrameLayout)layout).addView(tv);
这种方法里同样的字符串内容与 TextView 配置,却可以动态地根据系统的字体设置来测量文本长度。以下是同一段代码中在系统设置中将字体大小分别设置为小、普通与超大时的测量结果:
系统字体为小号时的测量结果:
Activity: txt length:720.0Activity: screen width:720
系统字体为普通时的测量结果:
Activity: txt length:864.0Activity: screen width:720
系统字体为超大时的测量结果:
Activity: txt length:1116.0Activity: screen width:720
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注创新互联行业资讯频道,感谢您对创新互联的支持。
网站栏目:Android中怎么测量文字宽度
URL链接:http://scyanting.com/article/gcdeoh.html