7

現在のテーマ属性に基づいて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>

そして最後に、ListViewxmlでこの属性を使用します。

<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/」を使用すると正常に機能します。「?android:attr/colorBackground」と言っても動作します。

メッセージエラーは次のとおりです。

android.view.InflateException:バイナリXMLファイルの行#8:クラスandroid.view.ListViewのインフレーションエラー原因:android.content.res.Resources $ NotFoundException:リソースが描画可能(色またはパス)ではありません:TypedValue {t = 0x2 / d = 0x7f010068 a = -1}

アンドロイドの属性で動作するので、私は何か間違ったことをしていると確信していますが、Google検索中に何を見つけることができませんでした。

あなたが私を助けてくれることを願っています!

どうもありがとう、

セバスチャン。

4

1 に答える 1

8

わかりました、私はそれを修正しました、そしてそれは間違いによるものでした!

私は2つのthemes.xmlファイルを持っています。1つはHoneycomb+用で、もう1つはGingerbread-用です。themes.xmlターゲティングするジンジャーブレッドに新しい属性を追加しただけで、ICSでテストしていました。

多分それは同じ間違いをする他の人を助けるでしょう!

于 2012-08-12T13:48:28.793 に答える