5

カスタム属性を使用して問題が発生しました。助けてください..

attr.xml で定義されたカスタム属性があります

<attr format="reference" name="btnPressed" />
<attr format="reference" name="btnNormal" />

そして私はテーマを持っています

<style name="MyTheme" parent="@style/Theme.Sherlock.Light.NoActionBar">
   <item name="btnPressed">@drawable/fav_icon</item>
   <item name="btnNormal">@drawable/not_fav_icon</item>
</style>

上記の fav_icon と not_fav_icon は私の画像です。

トグルボタン用に定義されたセレクターの favorite_btn.xml があります。

<selector xmlns:android="http://schemas.android.com/apk/res/android">   
    <item android:state_checked="true" android:drawable="?attr/btnPressed"/> 
    <item android:state_checked="false" android:drawable="?attr/btnNormal"/> 
    <item android:drawable="?attr/btnNormal"/>
</selector>

今、セレクターをトグルボタンに設定しています。

        <ToggleButton
            android:id="@+id/station_fav_star"
            android:layout_width="42dip"
            android:layout_height="42dip"
            android:background="@drawable/favorite_btn"
            android:textOff=""
            android:textOn="" />

そして、そのテーマを自分の活動に適用しています。しかし、以下で説明するように、Xml 解析例外が発生しています。

原因: org.xmlpull.v1.XmlPullParserException: Binary XML file line #11: tag requires a 'drawable' attribute or child tag defined a drawable

画像を通常のボタンに設定するためにカスタム属性を使用するのと同じ方法を行っていますが、機能しています。ただし、カスタム属性がセレクターで定義されている場合、機能しません。

何か不足している場合はお知らせください。

私はすでにこのリンクをチェックしました Android color selector does not work with custom attributes

その中で、色の変化について述べています。私の場合、それらはドローアブルです。他の方法がある場合は、解決策を提案してください。

前もって感謝します..

4

1 に答える 1

5

Android は、L プレビューまで、ドローアブル XML のテーマ属性をサポートしていませんでした。L プレビューの前に、すべてのテーマ属性は無効な値として扱われ、型に応じてインフレーション例外をスローするか、0 / null に解決されます。

于 2014-07-13T03:09:19.440 に答える