引用选择器会导致InflationException

时间:2014-02-20 22:05:09

标签: android themes selector android-drawable

我正在尝试为我的应用程序开发两个主题,并且根据主题,我需要一个View来使用不同的选择器。虽然当我创建一个确定要使用的正确选择器的引用时,我会收到InflationException错误。

这是我的attrs.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <declare-styleable name="ReditrTheme">
        <attr name="downvoteArrow" format="reference" />
        <attr name="upvoteArrow" format="reference" />
    </declare-styleable>

    <declare-styleable name="VoteState">
        <attr name="enabled" format="boolean" />
    </declare-styleable>

</resources>

这是我的themes.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <style name="DarkTheme" parent="@android:style/Theme.Holo">
        <item name="upvoteArrow">@drawable/upvote_states</item>
        <item name="downvoteArrow">@drawable/downvote_states</item>
    </style>

    <style name="LightTheme" parent="@android:style/Theme.Holo.Light">
        <item name="upvoteArrow">@drawable/upvote_states_l</item>
        <item name="downvoteArrow">@drawable/downvote_states_l</item>
    </style>

</resources>

这是我的upvote_states.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res/com.reditr.app">

<item android:drawable="@drawable/ic_action_arrow_top_colored" app:enabled="true"/>
<item style="@drawable/ic_action_arrow_top" app:enabled="false"/>

</selector>

这是我的upvotes_states_l.xml:

<selector xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res/com.reditr.app">

<item android:drawable="@drawable/ic_action_arrow_top_colored" app:enabled="true"/>
<item style="@drawable/ic_action_arrow_top_l" app:enabled="false"/>

</selector>

downvotes_states.xml和downvotes_states_l.xml与上面的相同,只是使用ic_action_arrow_bottom。

最后,这是我的视图,我正在尝试将引用应用于:

<com.example.views.UpvoteView
    android:id="@+id/upvote"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:gravity="center"
    android:scaleType="fitCenter"
    android:src="?attr/upvoteArrow" />

我在网上尝试了一些解决方案,但它们总是与我的问题略有不同,并没有解决我的问题。

提前致谢!

1 个答案:

答案 0 :(得分:0)

刚刚意识到我犯的错误。在我的states.xml文件中,我出于某种原因使用了style属性,它应该是android:drawable。