Dimens 文件中定义的字体大小,在 Java Class 中显示 3 倍的值
Font Size defined in Dimens file, displaying 3 times value in Java Class
我在 values/dimens.xml
文件夹中定义了这 3 个值。
<dimen name="newsFontLarge">32sp</dimen>
<dimen name="newsFontSmall">24sp</dimen>
<dimen name="newsFont">16sp</dimen>
我在 Java 代码
中得到这些值
largeText= getResources().getDimension(R.dimen.newsFontLarge);
smallText= getResources().getDimension(R.dimen.newsFontSmall);
newsFont= getResources().getDimension(R.dimen.newsFont);
问题是Javaclass中没有存储实际值,而是将值乘以3存储在变量中;即
largeText= 96
smallText= 72
newsFont= 48
请指导我如何在 java 变量中存储实际值(以维度定义)。
您从 getDimension()
获得的值以 像素 为单位。您资源中的值以 缩放像素 (sp
) 为单位。缩放像素考虑了屏幕密度和用户选择的字体比例。在你的情况下,我猜你的设备是一个 xxhdpi
设备(~480dpi)并且设置为正常字体比例,这可以解释为什么 1 sp
变成 3 个像素。
使用 sp
作为文本大小是一个很好的选择。
您可以在 the documentation 中阅读有关缩放像素的更多信息。
我在 values/dimens.xml
文件夹中定义了这 3 个值。
<dimen name="newsFontLarge">32sp</dimen>
<dimen name="newsFontSmall">24sp</dimen>
<dimen name="newsFont">16sp</dimen>
我在 Java 代码
中得到这些值 largeText= getResources().getDimension(R.dimen.newsFontLarge);
smallText= getResources().getDimension(R.dimen.newsFontSmall);
newsFont= getResources().getDimension(R.dimen.newsFont);
问题是Javaclass中没有存储实际值,而是将值乘以3存储在变量中;即
largeText= 96
smallText= 72
newsFont= 48
请指导我如何在 java 变量中存储实际值(以维度定义)。
您从 getDimension()
获得的值以 像素 为单位。您资源中的值以 缩放像素 (sp
) 为单位。缩放像素考虑了屏幕密度和用户选择的字体比例。在你的情况下,我猜你的设备是一个 xxhdpi
设备(~480dpi)并且设置为正常字体比例,这可以解释为什么 1 sp
变成 3 个像素。
使用 sp
作为文本大小是一个很好的选择。
您可以在 the documentation 中阅读有关缩放像素的更多信息。