Android的TextView的setTextSize错误地增

Android的TextView的setTextSize错误地增

本文介绍了Android的TextView的setTextSize错误地增加文字大小的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

这是在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错误地增加文字大小的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-04 23:41