3

したがって、android は で次のように定義しますthemes.xml

<style name="Theme">
    ...
    <item name="colorPressedHighlight">@color/legacy_pressed_highlight</item>
</style>

と:

<style name="Theme.Holo">
    ...
    <item name="colorPressedHighlight">@color/holo_blue_light</item>
</style>

これを押したときcolorPressedHighlightのカスタムの背景色として使用したいと思います。Buttonそこで、 で次のように定義しましたres/color/app_button_background.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
    <item
        android:state_pressed="true"
        android:drawable="?android:colorPressedHighlight"/>
    <item android:drawable="@android:color/transparent" />
</selector>

最後に、カスタムImageButtonスタイルを定義します。

<style name="App_ImageButtonStyle" parent="@android:style/Widget.ImageButton">
    <item name="android:gravity">center</item>
    <item name="android:background">@color/app_button_background</item>
</style>

次のコール スタックでアプリの起動時にクラッシュします。

06-27 20:24:41.954: E/AndroidRuntime(532): Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #6: <item> tag requires a 'drawable' attribute or child tag defining a drawable
06-27 20:24:41.954: E/AndroidRuntime(532):  at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:178)
06-27 20:24:41.954: E/AndroidRuntime(532):  at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:867)
06-27 20:24:41.954: E/AndroidRuntime(532):  at android.graphics.drawable.Drawable.createFromXml(Drawable.java:804)
06-27 20:24:41.954: E/AndroidRuntime(532):  at android.content.res.Resources.loadDrawable(Resources.java:1920)

クラッシュを修正して直接アクセスする@color/legacy_pressed_highlight@color/holo_blue_light、アクセスする代わりにアクセスすることはわかってcolorPressedHighlightいますが、問題は解決しません。colorPressedHighlightテーマはさまざまであるため、属性を介してアクセスする必要があります。

PS:まだ答えが見つからない同様の問題がありました。誰か助けてください!

4

1 に答える 1

-1

おそらく、ファイル res/values/attrs.xml で属性参照を宣言する必要もあります。

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

そして、?colorPressedHighlight代わりに として参照してください?android:colorPressedHighlight

于 2013-04-13T22:26:00.147 に答える