从strings.xml提供layout_height和layout_width

时间:2013-10-01 08:45:20

标签: java android xml android-layout android-imageview

我正在尝试从ImageView的常量字符串设置strings.xml的高度和宽度,如下所示:

 <ImageView
            android:id="@+id/GetMailing"
            android:layout_width="@string/continueBtnWidthHD"
            android:layout_height="@string/continueBtnHeightHD"
            android:layout_gravity="center"
            android:src="@drawable/continue_button_style" />

strings.xml,我有:

<string name="continueBtnHeightHD">60dp</string>
<string name="continueBtnWidthHD">250dp</string>

但这会在执行setContentView(view_Id)时出错。

错误是 java.lang.RuntimeException:二进制XML文件行#82:您必须提供layout_width属性。

我正在使用这种方法,因为我想在不同的地方使用相同的值。

这有点奇怪,因为我使用相同的方法设置maxlength的{​​{1}}并且它工作正常。

我做错了吗?

任何帮助表示感谢。

7 个答案:

答案 0 :(得分:7)

不是提供“字符串”作为资源,而是将其作为“dimen”提供:

在dimens.xml中

<dimen name="continueBtnHeightHD">60dp</dimen>
<dimen name="continueBtnWidthHD">250dp</dimen>

在活动xml文件中

 <ImageView
            android:id="@+id/GetMailing"
            android:layout_width="@dimen/continueBtnWidthHD"
            android:layout_height="@dimen/continueBtnHeightHD"
            android:layout_gravity="center"
            android:src="@drawable/continue_button_style" />

答案 1 :(得分:4)

高度和宽度意味着使用如下

<resources>
    <dimen name="my_dimen">10dip</dimen>
</resources>

现在,在布局文件中使用以上属性,如下所示

 android:layout_width="@dimens/my_dimen"
 android:layout_height="@dimens/my_dimen"

您可以在任何视图中使用@dimen/mydimen,并且只需在布局文件中对dp进行硬编码即可。

答案 2 :(得分:3)

不要将它们放在strings.xml中,将它们作为维度放在dimens.xml中:

<dimen name="continueBtnHeightHD">60dp</dimen>
<dimen name="continueBtnWidthHD">250dp</dimen>

然后在layout.xml中:

<ImageView
            android:id="@+id/GetMailing"
            android:layout_width="@dimens/continueBtnWidthHD"
            android:layout_height="@dimens/continueBtnHeightHD"
            android:layout_gravity="center"
            android:src="@drawable/continue_button_style" />

答案 3 :(得分:3)

您应该使用文件dimens.xml而不是strings.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="continueBtnHeightHD">60dp</dimen>
<dimen name="continueBtnWidthHD">250dp</dimen>
</resources>

然后在您的布局中,您将以这种方式引用这些值:

<ImageView
            android:id="@+id/GetMailing"
            android:layout_width="@dimen/continueBtnWidthHD"
            android:layout_height="@dimen/continueBtnHeightHD"
            android:layout_gravity="center"
            android:src="@drawable/continue_button_style" />

答案 4 :(得分:3)

在values文件夹中创建size.xml,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<resources>
<dimen name="continueBtnHeightHD">60dp</dimen>
<dimen name="continueBtnWidthHD">250dp</dimen>
</resources>

在layout.xml中

<ImageView
            android:id="@+id/GetMailing"
            android:layout_width="@dimens/continueBtnWidthHD"
            android:layout_height="@dimens/continueBtnHeightHD"
            android:layout_gravity="center"
            android:src="@drawable/continue_button_style" />

答案 5 :(得分:2)

这是对字符串资源的错误使用。您应该使用Dimension来指定尺寸。

答案 6 :(得分:2)

您应该使用维度资源,而不是为此使用字符串资源。见这里:

http://developer.android.com/guide/topics/resources/more-resources.html#Dimension

您可以在values文件夹中创建一个文件dimens.xml(与您放置strings.xml的位置相同)。

示例dimens.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
  <dimen name="continueBtnHeightHD">60dp</dimen>
  <dimen name="continueBtnWidthHD">250dp</dimen>
</resources>