我从Android开始,并且试图将所有尺寸都放入dimens.xml中。我为android:ems
尝试了相同的方法,但是它导致应用崩溃。
我认为我可以将dims资源用于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>
但是,仅当我使用android:ems="14"
我认为dimens资源文件仅用于dp和sp值,不确定。如果是这样,还有另一种方法可以将所有ems值保留在资源文件中吗?
答案 0 :(得分:0)
没有特殊属性,维度就无法读取值。在此处阅读更多信息:https://developer.android.com/guide/topics/resources/more-resources#Dimension
您可以将ems值保留在xml中
答案 1 :(得分:0)
在dimens.xml中配置的所有维度都必须具有单位,并且dimens.xml中支持六个单位。
除了支持(英寸),mm(毫米)和pt(72 DPI点)之外,常用的单位还包括sp(与比例无关的像素),dp(与密度无关的像素),px(像素像素)。
要在xml中引用上面定义的调光,可以使用@ dimen / sizeA。
要在代码中引用上面定义的调光,可以使用
getResources().getDimension(R.dimen.sizeB);
但是,在布局中,您经常会使用一些无单位的常数值,例如在LinearLayout中设置每个子项的权重值(android:layout_weight),并设置行距倍数(android:lineSpacingMultiplier)在TextView中。这些值无法通过以下直接定义保存在dimens.xml中,没有单位。
<dimen name="sizeD">18</dimen>
<dimen name="sizeE">5.5</dimen>
将没有单位的值保存在dimens.xml中
要在Dimensions.xml中保存不带单位的值,可以按以下格式进行定义。
<item name="text_line_spacing" type="dimen" format="float">1.2</item>