Android TextView setTextSize不正确地增加文字大小
这是TextView的扩展。 getTextSize()
和setTextSize()
不会被覆盖,我不扩展这些方法。 编程1.6,API级别4。
这个代码中的循环会导致每次迭代大小乘以1.5,例如,如果大小最初从getTextSize
读取200,则setTextSize(size)
,再次调用getTextSize
读回300。
public void shrinkTest() { float size = this.getTextSize(); while (size > 8) { this.setTextSize(size); size = this.getTextSize(); } }
为什么是这样?
赫,混单位问题。 看起来有点不直观,但这是一个简单的修复。 默认方法setTextSize(float)
假定您inputsp
单位(缩放像素),而getTextSize()
方法返回一个确切的像素大小。
你可以通过使用替代的setTextSize(TypedValue, float)
来解决这个问题,就像这样:
this.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
这将确保你正在使用相同的单位。
setTextSize()
和getTextSize()
使用不同的单位。 set()的参数是密度无关的“缩放像素”,而get()返回普通的旧像素。
使用TypedValue传递大小单位,如下所示:
TypedValue.COMPLEX_UNIT_PX //像素
TypedValue.COMPLEX_UNIT_SP //比例像素
TypedValue.COMPLEX_UNIT_DIP //与设备无关的像素
setTextSize(TypedValue.COMPLEX_UNIT_SP,18)