Android TextView setTextSize错误地增加了文本大小

参见英文答案 > TextView.setTextSize behaves abnormally – How to set text size of textview dynamically for different screens                                    7个
这是TextView的扩展. getTextSize()和setTextSize()没有被覆盖,我没有扩展那些方法.编程1.6,API级别4.

此代码中的循环导致每次迭代时大小乘以1.5,例如如果size最初从getTextSize读取200,则调用setTextSize(size),再次调用getTextSize会读回300.

public void shrinkTest() {
    float size = this.getTextSize(); 
    while (size > 8) {
        this.setTextSize(size);
        size = this.getTextSize();
    }
}

为什么是这样?

解决方法:

嘿,混合单位的问题.似乎有点违反直觉,但这是一个简单的解决方案.默认方法setTextSize(float)假定您输入sp单位(缩放像素),而getTextSize()方法返回精确像素大小.

您可以通过使用备用setTextSize(TypedValue,float)来解决此问题,如下所示:

this.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);

这将确保您使用相同的单位.

上一篇:Nacos与Zookeeper对比


下一篇:Android图像表示