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:src'の代わりに'android:background'プロパティを使用してみてください。つまり、ImageViewを使用せず、ViewまたはLinearLayoutの背景のみを使用してください。

ところで、属性を参照するための正しい構文は次のとおりです。

<... 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" ... />
于 2012-06-29T20:53:24.823 に答える