文本大小增量在 Android 中不起作用

Text size increment not working in Android

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

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() 方法时,文本大小仍在不断增加。
这是调用 decSize() 时的 logcat:

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

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

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

您应该使用相同的度量单位设置和获取文本大小。可以用setTextSize(TypedValue.COMPLEX_UNIT_PX, size)代替setTextSize(size),这样文字大小就设置好了,得到px.