文本大小增量在 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
.
最近我编写了一个 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
.