为什么我在dimens.xml中输入android:ems的值时应用程序崩溃?

为什么我在dimens.xml中输入android:ems的值时应用程序崩溃?,android,ems,Android,Ems,我从Android开始,尝试将所有维度都放在dimens.xml中。我对android:ems尝试了同样的方法,但它导致应用程序崩溃 我想我可以使用dimens资源来获取ems值。通过这种方式,我可以将所有ems的值放在同一个文件中 以下是布局代码: <EditText android:id="@+id/editName" android:layout_width="wrap_content" andr

我从Android开始,尝试将所有维度都放在dimens.xml中。我对android:ems尝试了同样的方法,但它导致应用程序崩溃

我想我可以使用dimens资源来获取ems值。通过这种方式,我可以将所有ems的值放在同一个文件中

以下是布局代码:

        <EditText
            android:id="@+id/editName"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_below="@+id/textContact"
            android:imeOptions="actionNext"
            android:inputType="textCapWords"
            android:ems="@dimen/act_cont_editName_ems">
            <requestFocus/>
        </EditText>


下面是dimens.xml中的代码

<dimen name="act_cont_editName_ems">14</dimen>
14
但是,只有在我使用android:ems=“14”


我想dimens资源文件仅用于dp和sp值,不确定。如果是这样,是否有其他方法可以将所有ems值保存在资源文件中?

如果没有特殊属性,维度无法读取值。请在此处阅读更多信息:


您可以将ems值保留在xml中

在dimens.xml中配置的所有维度都必须有单位,并且dimens.xml中有六个受支持的单位

除了支持英寸、毫米和点(72 DPI处的点)外,常用的单位还有sp(与比例无关的像素)、dp(与密度无关的像素)、px(像素)

要在xml中引用上述定义的dimen,可以使用@dimen/sizeA。 要在代码中引用上述定义的维度,可以使用
getResources().getDimension(R.dimen.sizeB)

但是,在布局中,通常会使用一些常量值​​不带单位,例如在LinearLayout中设置每个子项的权重值(android:layout_weight),以及在TextView中设置行距倍数(android:lineSpacingMultiplier)。这些价值观​​如果没有单位,则无法通过以下直接定义保存在dimens.xml中

<dimen name="sizeD">18</dimen>
<dimen name="sizeE">5.5</dimen>
18
5.5
在dimens.xml中保存不带单位的值

<dimen name="act_cont_editName_ems">14</dimen>
要在dimensions.xml中保存不带单位的值,可以使用以下格式定义它

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

下面是dimens.xml中的代码:“14这个答案应该被接受,因为它是有效的