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 中阅读有关缩放像素的更多信息。