2

我正在为可绘制对象编写 xml。我的问题是:有没有办法让 src 属性引用 attr.xml 文件中定义的属性?我试过了:

android:src="?image"

android:src="?attr/image"

它们似乎都不起作用。这是我的 attr.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <attr name="image" format="reference"></attr>
</resources>

以及我在哪里定义与主题相关的值:

<resources>
    <style name="HOLO" parent="@android:style/Theme.Black">
        <item name="android:textColor">#00FFFF</item>
        <item name="image">@drawable/holo_vcard_settings_icon</item>

        </style>
    <style name="HOLO_LIGHT" parent="@android:style/Theme.Light">
        <item name="android:textColor">#FF00FF</item>
        <item name="image">@drawable/holo_light_vcard_settings_icon</item>
        </style>
</resources>
4

1 回答 1

1

几点建议:

  1. 尝试清理您的项目。我经历过几次在 Eclipse 构建中未更新 XML 更改的情况。
  2. 您确定您的应用程序或活动正在使用 HOLO 或 HOLO_LIGHT 主题吗?检查您的活动中是否设置了“android:theme”键。
  3. 尝试使用 'android:background' 属性而不是 'android:src',这意味着不要使用 ImageView 而只使用 View 或 LinearLayout 的背景。

顺便说一句,引用您的属性的正确语法是:

<... android:src="?attr/image" .../>

第四种选择:如果一切都失败了,您可以尝试使用该属性作为样式。(只是预感,它可能不起作用)例如:

<resources>
    <attr name="imageStyle" format="reference"></attr>
</resources>

然后在你的styles.xml

 <style name="LightImageStyle">
    <item name="android:src">@drawable/light_png</item>
 </style>
 <style name="DarkImageStyle">
    <item name="android:src">@drawable/dark_png</item>
 </style>

然后在你的themes.xml

 <style name="HOLO" ...>
     <item name="imageStyle">@style/DarkImageStyle</item>
 </style>
 <style name="HOLO_LIGHT" ....>
     <item name="imageStyle">@style/LightImageStyle</item>
 </style>

最后在你的布局中:

 <ImageView style="?attr/imageStyle" ... />
于 2012-06-29T20:53:24.823 回答