这很奇怪,但是我无法获得dimen的价值,所以怎么了?清理或使缓存无效无济于事。
dimens.xml:
<dimen name="dialog_width_percent">0.85</dimen>
代码:
float percent = context.getResources().getDimension(R.dimen.dialog_width_percent);
有Resources$NotFoundException
答案 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);