android - 文本大小增量在 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
为什么会发生这种情况以及如何解决?
解决方案
发生这种情况是因为默认情况下getTextSize()
以像素为单位返回文本大小,而setTextSize()
以缩放像素为单位设置文本大小。
您应该使用相同的测量单位设置和获取文本大小。您可以使用setTextSize(TypedValue.COMPLEX_UNIT_PX, size)
代替setTextSize(size)
,因此设置文本大小并进入px
。
推荐阅读
- aws-lambda - 无服务器框架 - 用于预定义 Cloud Front Distribution 的 Lambda@Edge 部署
- c# - 有没有办法检查表单中是否单击了任何单选按钮?
- python - 如何使用滑块同时更新更多线图?
- java - Interface for Lazy Loaded List of Objects
- python - 如何确定一个库(例如在 pypi.org 上)是否适用于 Python 3
- swift - 视图内容没有出现在 UIScrollView 中
- c# - Window.show 未在 wpf 中加载内容
- spring-boot - 如何根据条件限制 Spring 中 stomp 客户端的数量,订阅特定主题?
- docker - Azure 容器注册表:得到“无法在 unix:///var/run/docker.sock 连接到 Docker 守护程序。docker 守护程序是否正在运行?”
- python - 如何检索 data_value 中的内容?在 python 中使用硒?