首页 > 解决方案 > 文本大小增量在 Android 中不起作用

问题描述

最近我编写了一个 Android 应用程序来测试字体设置。在那里我放了两个按钮来增加和减少 EditText 的文本大小。这是我的代码:(我已将 Log 语句用于调试目的。)

public void incSize(View v) {
    float size=e.getTextSize();
    Log.v("Size b4 inc", String.valueOf(size));
    e.setTextSize(size+1f);
    size=e.getTextSize();
    Log.v("Size after inc", String.valueOf(size));
}

public void decSize(View v) {
    float size=e.getTextSize();
    Log.v("Size b4 dec", String.valueOf(size));
    e.setTextSize(size-1f);
    size=e.getTextSize();
    Log.v("Size after dec", String.valueOf(size));
}

我发现即使decSize()调用方法,文本大小也会不断增加。这是调用
时的logcat :decSize()

2020-04-06 18:47:51.555 27276-27276/com.mapsup.customfonts V/Text size: 21.0
2020-04-06 18:47:51.556 27276-27276/com.mapsup.customfonts V/Text size: 23.0

incSize()这是调用时的logcat :

2020-04-06 18:47:54.072 27276-27276/com.mapsup.customfonts V/Text size: 23.0
2020-04-06 18:47:54.072 27276-27276/com.mapsup.customfonts V/Text size: 27.599998

为什么会发生这种情况以及如何解决?

标签: androidandroid-edittext

解决方案


发生这种情况是因为默认情况下getTextSize()以像素为单位返回文本大小,而setTextSize()以缩放像素为单位设置文本大小。

您应该使用相同的测量单位设置和获取文本大小。您可以使用setTextSize(TypedValue.COMPLEX_UNIT_PX, size)代替setTextSize(size),因此设置文本大小并进入px


推荐阅读