小编典典

将浮点值添加到 android 资源/值

all

我正在尝试使用文档android:lineSpacingMultiplier
中的文本视图在行之间添加一点空间:

文本行之间的额外间距,作为乘数。

必须是浮点值,例如“1.2”。

当我在几个不同的 TextViews
中使用它时,我想为我的资源添加一个全局维度/值,但我不知道要使用哪个标签,如果它甚至存在的话。我已经尝试了所有对我有意义的资源类型,但它们都不起作用。

我想要的是这样的:

<resources>
    <dimen name="text_line_spacing">1.4</dimen>
</resources>

编辑:我知道android:lineSpacingExtra(需要一个带有附加单位的尺寸),但如果可能的话我想使用android:lineSpacingMultiplier


阅读 78

收藏
2022-05-13

共1个答案

小编典典

有一个解决方案:

<resources>
    <item name="text_line_spacing" format="float" type="dimen">1.0</item>
</resources>

这样,您的浮点数将在@dimen 下。请注意,您可以使用其他“格式”和/或“类型”修饰符,其中格式代表:

格式 = 封闭数据类型:

  • float
  • boolean
  • fraction
  • integer

type 代表:

类型 = 资源类型(用 R.XXXXX.name 引用):

  • color
  • dimen
  • string
  • style
  • etc…

要从代码中获取资源,您应该使用以下代码段:

TypedValue outValue = new TypedValue();
getResources().getValue(R.dimen.text_line_spacing, outValue, true);
float value = outValue.getFloat();

我知道这很令人困惑(您会期望 call like
getResources().getDimension(R.dimen.text_line_spacing)),但
Androiddimensions有特殊处理,纯“浮点”数字不是有效维度。


此外,还有一个小“hack”可以将浮点数放入维度,但请注意这 确实是 hack* 您有可能失去浮点范围和精度。 *

<resources>
    <dimen name="text_line_spacing">2.025px</dimen>
</resources>

从代码中,您可以通过

float lineSpacing = getResources().getDimension(R.dimen.text_line_spacing);

在这种情况下,值为,lineSpacing2.024993896484375不是2.025您所期望的。

2022-05-13