基于主题属性设置视图背景会使应用程序崩溃

时间:2012-08-11 12:04:16

标签: android android-layout

我正在尝试根据当前主题属性设置ListView背景颜色,但每次显示ListView时它都会崩溃。看起来我做错了但是我看不到...

这就是我正在做的事情:

首先,创建背景颜色:

<resources>
    <color name="userlist_background_light">#fff0f0f0</color>
    <color name="userlist_background_dark">#ff040404</color>
</resources>

其次,为我的自定义主题创建属性:

<resources>
    <attr name="userlist_background" format="reference|color" />
</resources>

第三,在我的主题中设置此属性:

<resources xmlns:android="http://schemas.android.com/apk/res/android">
    <style name="Light" parent="Theme.Sherlock.Light">
        <item name="userlist_background">@color/userlist_background_light</item>
    </style>

    <style name="Dark" parent="Theme.Sherlock">
        <item name="userlist_background">@color/userlist_background_dark</item>
    </style>
</resources>

最后,在ListView xml中使用此属性:

<ListView
        android:id="@+id/user_bar"
        android:layout_width="0dip"
        android:layout_height="0dip"
        android:background="?attr/userlist_background"
        android:cacheColorHint="?userlist_background"
        android:visibility="gone" />

甚至Eclipse布局视图也崩溃了。当然,如果我在background属性中直接使用“@ color /”,它可以正常工作。如果我使用say,“?android:attr / colorBackground”,它甚至可以工作。

消息错误是:

  

android.view.InflateException:二进制XML文件行#8:错误   inflating类android.view.ListView引起:   android.content.res.Resources $ NotFoundException:资源不是   可绘制(颜色或路径):TypedValue {t = 0x2 / d = 0x7f010068 a = -1}

我很确定我做错了什么,因为它适用于Android属性,但我无法在Google搜索过程中找到什么。

我希望你能帮助我!

非常感谢,

塞巴斯蒂安。

1 个答案:

答案 0 :(得分:4)

好的,我修好了,这是因为错误!

我有两个themes.xml个文件,一个用于Honeycomb +,另一个用于Gingerbread-。我只是将新属性添加到themes.xml目标Gingerbread-,并在ICS上进行测试。

也许它会帮助那些犯同样错误的人!