如何计算合适的场宽?

时间:2010-09-18 23:20:18

标签: android android-widget

在我的应用程序中,我显示的是一个表格,其中单个单元格是可编辑的文本字段(即EditText对象)。我目前正在努力为这些计算合适的宽度。

如果我将宽度设置为“Ems”,因为显示的文本有字符,我的字段宽度大约为2倍,表格看起来很丑,浪费了大量宝贵的屏幕空间。在“Ems”中设置宽度基本上就像假设最坏的情况一样,即假设它只包含字体中最宽泛的字符,通常为“M”(因此是方法的名称),即字符串的宽度,'m ','W'或'_')。但平均而言,字符串包含较窄的字符,因此大多数字段都是半空的,并且对于实际内容来说太宽。因此,我拼命寻求一种计算更好的拟合宽度的方法,而不是最坏情况下的宽度。

在Java中执行此操作的“正常”方式(至少在AWT或Swing中)是要求窗口小部件的当前字体(实际上是字体的FontMetrics),以计算并返回显示给定字符串所需的宽度像素。但是如何获得TextView的字体呢?我没有找到任何方法来获取(文本)视图的字体和/或根据单元格的文本字符串的实际内容计算更合适的宽度。如何在Android中做到这一点?

迈克尔

1 个答案:

答案 0 :(得分:5)

我刚刚找到了“缺失的链接”:<TextView>.getPaint()就是答案!

“Paint”然后使用类似<Paint>.measureText(...)的方法计算字符串的宽度,使用&lt; Paint>.ascent()<Paint>.descent()计算字符串的高度。

迈克尔