问题描述
这是在TextView中的延伸。 getTextSize()
和 setTextSize()
不重写,我不扩展这些方法。编程1.6,API等级4。
This is in an extension of TextView. getTextSize()
and setTextSize()
are not overridden, I do not extend those methods. Programming in 1.6, API level 4.
在此code的循环导致的大小是由1.5每次迭代的时间成倍增加,如:如果大小开始从 getTextSize
读取200,然后 setTextSize(尺寸)
叫 getTextSize
又称为读回300。
The loop in this code causes size to be multiplied by 1.5 every time it iterates, e.g. if size initially reads 200 from getTextSize
, then setTextSize(size)
is called, getTextSize
called again reads back 300.
public void shrinkTest() {
float size = this.getTextSize();
while (size > 8) {
this.setTextSize(size);
size = this.getTextSize();
}
}
这是为什么?
Why is this?
推荐答案
嘿,混合部队的问题。似乎有点违反直觉,但它是一个容易解决。默认的方法 setTextSize(浮点)
假设你输入 SP
单元(缩放像素),而 getTextSize()
方法返回一个确切的像素大小。
Heh, mixed units problem. Seems a little counterintuitive, but it's an easy fix. The default method setTextSize(float)
assumes you're inputting sp
units (scaled pixels), while the getTextSize()
method returns an exact pixel size.
您可以通过使用替代 setTextSize(的TypedValue,浮动)解决这个问题
,像这样:
You can fix this by using the alternate setTextSize(TypedValue, float)
, like so:
this.setTextSize(TypedValue.COMPLEX_UNIT_PX, size);
这将确保你正在使用相同的单位。
This will make sure you're working with the same units.
这篇关于Android的TextView的setTextSize错误地增加文字大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!