如何指定具有attr属性的可绘制源?

时间:2012-06-29 20:04:38

标签: android xml drawable attr

我正在为drawable编写一个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>

1 个答案:

答案 0 :(得分:0)

一些建议:

  1. 尝试清理您的项目。我曾经历过几次在Eclipse构建中没有更新XML更改的内容。
  2. 您确定您的应用或活动是使用HOLO还是HOLO_LIGHT主题?检查您的活动中是否设置了'android:theme'键。
  3. 尝试使用'android:background'属性而不是'android:src',这意味着不要使用ImageView,只使用View或LinearLayout的背景。
  4. BTW,引用您的属性的正确语法是:

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

    第4个选项:如果所有其他方法都失败,您可以尝试将该属性用作样式。 (只是预感,它可能不起作用)例如:

    <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" ... />