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

标签 android resources floating-point

我正在尝试使用 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/

相关文章:

java - Android保存到外部SD卡?

安卓扩展文件

android - 在 Android 中释放资源

java - 通过 ReentrantReadWriteLock 中断等待的读取线程

language-agnostic - 对于 IEEE-754,0 < ABS(const) < 1,(x/const) * const 是否保证为 X 的不同值返回不同的结果?

android - 如何判断多屏是否添加了第二个应用?

android - 在android中重新启动micro sd卡

java - 从jar中获取资源

c++ - 浮点不准确的解决方法是什么?

string - 在 Haskell 中显示没有小数位的浮点整数的简单方法?