我有两台设备 - HTC Tattoo 和索尼爱立信 Xperia X10。一个有 145 DPI,另一个有 245 DPI。
当我以磅为单位指定 TextView 的字体大小时,如下所示:
textView.setTextSize(TypedValue.COMPLEX_UNIT_PT, 6.5f);
我在这两种设备上得到不同物理尺寸的文本。在 245 DPI 下,文本几乎不可读。
现在,“pt”大小应该是物理的。即,在我的测试中,两个文本 block 应该具有相同物理高度的字母。事实并非如此。
这里有什么问题吗?
感谢您的帮助, 尤里。
最佳答案
pt
单位是点,不会按密度缩放。对于您想要的非文本 dip
(或 dp
),它们是与密度无关的像素。这些将根据密度缩放。对于文本,您需要 <a href="http://developer.android.com/reference/android/util/TypedValue.html#COMPLEX_UNIT_SP" rel="noreferrer noopener nofollow">sp</a>
, 它将根据密度缩放,也根据用户的首选字体大小缩放。
这里有一些关于它的信息,也散布在 Android 文档的其他地方。
http://developer.android.com/guide/practices/screens_support.html#screen-independence
更新:这里是每个维度单位的描述,正如 Yuri 正确指出的那样,这确实表明 pt
在物理屏幕上应始终为 1/72 英寸。它似乎不是那样工作的,答案就是使用 dp
和 sp
- 如果您想向用户显示点之类的东西,只需做一些数学运算(dp
在 160dpi 屏幕上可以假设为 1px,即 1/160 英寸)。
http://developer.android.com/guide/topics/resources/more-resources.html#Dimension
关于android - Android 中字体的物理大小(以磅为单位),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3396007/