如何计算合适的场宽?

mmo*_*mmo 0 android android-widget

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

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

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

迈克尔

mmo*_*mmo 5

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

然后,"Paint"具有<Paint>.measureText(...)计算字符串宽度和< Paint>.ascent()以及<Paint>.descent()计算字符串高度的方法.

迈克尔