This question already has answers here:
TextView.setTextSize behaves abnormally - How to set text size of textview dynamically for different screens
(8个答案)
4年前关闭。
这是TextView的扩展。
这段代码中的循环会导致每次迭代时将大小乘以1.5,例如如果size最初从
为什么是这样?
这将确保您使用的是相同的单元。
(8个答案)
4年前关闭。
这是TextView的扩展。
getTextSize()
和setTextSize()
不被覆盖,我不扩展这些方法。在API级别1.6中进行编程。这段代码中的循环会导致每次迭代时将大小乘以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);
这将确保您使用的是相同的单元。
09-30 23:20