3

我正在尝试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 属性。

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

这有点奇怪,因为我使用相同的方法来设置maxlengthEditText并且工作正常。

我做错什么了吗?

任何帮助表示赞赏。

4

7 回答 7

8

您不提供“字符串”作为资源,而是将其提供为“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" />
于 2013-10-01T08:52:10.107 回答
4

高度和宽度的用途如下

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

现在,像这样在布局文件中使用上述属性

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

您可以@dimen/mydimen在任何视图以及需要dp在布局文件中硬编码时使用。

于 2013-10-01T08:50:29.333 回答
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" />
于 2013-10-01T08:52:10.337 回答
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" />
于 2013-10-01T08:48:51.483 回答
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" />
于 2013-10-01T08:50:27.840 回答
2

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

于 2013-10-01T08:48:35.223 回答
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>
于 2013-10-01T08:50:10.753 回答