有一个解决方案:
<resources>
<item name="text_line_spacing" format="float" type="dimen">1.0</item>
</resources>
这样,您的浮点数将位于@dimen下。请注意,您可以使用其他“格式”和/或“类型”修饰符,其中format表示:
格式=包含的数据类型:
和type代表:
类型=资源类型(用R.XXXXX.name引用):
要从代码中获取资源,您应该使用以下代码段:
TypedValue outValue = new TypedValue();
getResources().getValue(R.dimen.text_line_spacing, outValue, true);
float value = outValue.getFloat();
我知道这很令人困惑(您可能会喜欢调用getResources().getDimension(R.dimen.text_line_spacing)
),但是Android dimensions
进行了特殊处理,纯“浮点数”无效。
另外,有一个小的“ hack”将浮点数放入维中,但是要警告这确实是hack,并且您冒着失去浮点范围和精度的风险。
<resources>
<dimen name="text_line_spacing">2.025px</dimen>
</resources>
从代码中可以得到
float lineSpacing = getResources().getDimension(R.dimen.text_line_spacing);
在这种情况下,价值lineSpacing
就是2.024993896484375
,而不是2.025
因为你的预期。