在我的应用程序中,我显示的是一个表格,其中单个单元格是可编辑的文本字段(即EditText对象)。我目前正在努力为这些计算合适的宽度。
如果我将宽度设置为“Ems”,因为显示的文本有字符,我的字段宽度大约为2倍,表格看起来很丑,浪费了大量宝贵的屏幕空间。在“Ems”中设置宽度基本上就像假设最坏的情况一样,即假设它只包含字体中最宽泛的字符,通常为“M”(因此是方法的名称),即字符串的宽度,'m ','W'或'_')。但平均而言,字符串包含较窄的字符,因此大多数字段都是半空的,并且对于实际内容来说太宽。因此,我拼命寻求一种计算更好的拟合宽度的方法,而不是最坏情况下的宽度。
在Java中执行此操作的“正常”方式(至少在AWT或Swing中)是要求窗口小部件的当前字体(实际上是字体的FontMetrics),以计算并返回显示给定字符串所需的宽度像素。但是如何获得TextView的字体呢?我没有找到任何方法来获取(文本)视图的字体和/或根据单元格的文本字符串的实际内容计算更合适的宽度。如何在Android中做到这一点?
迈克尔
答案 0 :(得分:5)
我刚刚找到了“缺失的链接”:<TextView>.getPaint()
就是答案!
“Paint”然后使用类似<Paint>.measureText(...)
的方法计算字符串的宽度,使用&lt; Paint>.ascent()
和<Paint>.descent()
计算字符串的高度。
迈克尔