尝试检索维度时发生错误NotFoundException

时间:2018-07-17 13:37:12

标签: android android-resources

这很奇怪,但是我无法获得dimen的价值,所以怎么了?清理或使缓存无效无济于事。

dimens.xml:

<dimen name="dialog_width_percent">0.85</dimen>

代码:

float percent = context.getResources().getDimension(R.dimen.dialog_width_percent);

Resources$NotFoundException

4 个答案:

答案 0 :(得分:1)

您不应该将float或double用作资源类型,请检查以下链接: Android float/double resource type

基本上,它说明了如果您想使用这种类型,则必须进行某种“黑客”操作。摘自原始帖子:

 <item name="float" type="dimen" format="float">9.52</item>

从Java引用

TypedValue typedValue = new TypedValue();
getResources().getValue(R.dimen.my_float_value, typedValue, true);
float myFloatValue = typedValue.getFloat();

链接到android dev网站,该网站解释了无法使用float / double的情况: https://developer.android.com/guide/topics/resources/available-resources

答案 1 :(得分:0)

0.85无效。使用fraction

<fraction name="dialog_width_percent">0.85</fraction>

float percent = context.getResources().getFraction(R.fraction.dialog_width_percent, 1, 1);

答案 2 :(得分:0)

按照以下步骤尝试0.85dp

<dimen name="dialog_width_percent">0.85dp</dimen>

答案 3 :(得分:0)

维度期望dp改用分数。

<fraction name="dialog_width_percent" type="fraction">85%</fraction>

然后您可以像这样在活动中调用它:

float percent = context.getFraction(R.fraction.dialog_width_percent, 1, 1);