【问题标题】:How can i specify a drawable source with an attr attribute?如何使用 attr 属性指定可绘制源?
【发布时间】:2012-06-29 20:04:37
【问题描述】:

我正在为可绘制对象编写 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>

【问题讨论】:

    标签: android xml drawable attr


    【解决方案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" ... />
    

    【讨论】:

    • 是的,我查过了。似乎不起作用。我正在使用图像视图,因为我的目标是能够将图片与主题相关联。这是一个大项目,在那个项目中他们正在使用 imageView。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-29
    • 2017-01-26
    • 1970-01-01
    • 2013-05-27
    • 1970-01-01
    相关资源
    最近更新 更多