我正在尝试使用 android:lineSpacingMultiplier
在我的 TextViews 的行之间添加一点空间
来自 documentation :
Extra spacing between lines of text, as a multiplier.
Must be a floating point value, such as "1.2".
当我在几个不同的 TextViews 中使用它时,我想为我的资源添加一个全局维度/值,但我不知道要使用哪个标签,如果它甚至存在的话。 我都试过了resource types这对我来说很有意义,但它们都不起作用。
我想要的是这样的:
<resources>
<dimen name="text_line_spacing">1.4</dimen>
</resources>
编辑:我知道 android:lineSpacingExtra
(它需要一个带有附加单位的维度),但我想尽可能使用 android:lineSpacingMultiplier
.
最佳答案
有一个解决办法:
<resources>
<item name="text_line_spacing" format="float" type="dimen">1.0</item>
</resources>
这样,您的 float 将在@dimen 下。请注意,您可以使用其他“格式”和/或“类型”修饰符,其中格式代表:
格式 = 封闭数据类型:
- float
- bool 值
- 分数
- 整数
- ...
类型代表:
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
有特殊处理纯“浮点”数不是有效维度。
此外,还有一个小“黑客”可以将 float 放入维度,但警告这是真正的黑客,你有可能失去 float 范围和精度。
<resources>
<dimen name="text_line_spacing">2.025px</dimen>
</resources>
从代码中,你可以得到那个 float
float lineSpacing = getResources().getDimension(R.dimen.text_line_spacing);
在这种情况下,lineSpacing
的值是 2.024993896484375
,而不是您所期望的 2.025
。
关于android - 将浮点值添加到 android 资源/值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3282390/