当尝试使用以下xml代码片段对res / layout / some_layout.xml进行膨胀时,Roblectric会抛出一个Excpetion:
<LinearLayout
android:id="@+id/some_linearlayout"
android:layout_width="0dip"
android:layout_height="wrap_content"
android:layout_weight="@dimen/some_value"
android:orientation="horizontal" />
这是dimens.xml中的值
<item name="some_value" format="float" type="dimen">0</item>
但是在尝试扩充res / layout / some_layout.xml
时出现以下错误java.lang.NumberFormatException: For input string: "@0"
at java.lang.Float.parseFloat(Float.java:422)
at android.content.res.TypedArray.$$robo$$TypedArray_42b1_getFloat(TypedArray.java:287)
at android.content.res.TypedArray.getFloat(TypedArray.java)
at android.widget.LinearLayout$LayoutParams.$$robo$$LayoutParams_5d9a___constructor__(LinearLayout.java:1813)
at android.widget.LinearLayout$LayoutParams.<init>(LinearLayout.java:1809)
at android.widget.LinearLayout.$$robo$$LinearLayout_e83a_generateLayoutParams(LinearLayout.java:1721)
at android.widget.LinearLayout.generateLayoutParams(LinearLayout.java)
at android.widget.LinearLayout.generateLayoutParams(LinearLayout.java:58)
at android.view.LayoutInflater.$$robo$$LayoutInflater_1d1f_rInflate(LayoutInflater.java:748)
at android.view.LayoutInflater.rInflate(LayoutInflater.java)
一些重要信息:
1)如果我更换&#34; @ dimen / some_margin&#34;这个错误就消失了。在some_layout.xml中使用&#34; 0&#34; (两者都没有引号)。
2)该应用程序成功地在模拟器和真实设备上膨胀布局。
3)我可以使用Robolectric来扩充其他布局(但他们不会在dimens.xml中使用浮点类型)。
4)就我的目的而言,尺寸必须是float类型。
我认为这个问题与dimens.xml中的some_value是浮点类型有关。
任何人都可以了解为什么抛出此异常?使用float类型dimens.xml值来扩展此布局的解决方案也将非常受欢迎。