2010-09-21 2 views
16

Ich versuche eine Farbe zu verwenden, die in einem Selektor in einem Selektor definiert ist, aber es verursacht eine Resources $ NotFoundException.Kann eine Selektor-Ressource eine in einem Stil definierte Farbe verwenden?

Zuerst habe ich ein neues Attribut attr.xml:

<resources> 
    <attr name="unread_background" format="color" /> 
</resources> 

Dann definiert ich diesen attr Wert in styles.xml:

<style name="ThemeNoTitleBar" parent="android:Theme.NoTitleBar"> 
    <item name="unread_background">#000000</item> 
</style> 

Dann habe ich versucht, diese attr in meiner Wähler zu verwenden definition:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <!-- other states snipped --> 
    <item android:state_selected="false" 
     android:drawable="?unread_background" /> 
</selector> 

Zuletzt verwendet die Aktivität das Design ThemeNoTitleBar im Manifest.

Ich habe auch versucht, eine Farbe in colors.xml zu erstellen und mit dem neuen attr, aber das scheitert auch.

Ich vermisse offensichtlich etwas, aber ich bin mir nicht sicher, was zu tun ist, um es zu beheben. Meine Absicht ist es, mehrere Themes zu erstellen, und der Selektor verwendet die Farbe des aktuell ausgewählten Themas.

Antwort

0

Android button with different background colors Werfen Sie einen Blick auf das Beispiel. Es sieht so aus, als ob du das brauchst.

+0

Wenn ich ersetzen unread_background mit einem hartcodierte Farbwert dann funktioniert es gut, so glaube ich nicht, dass andere Antwort hier gilt. – toddler

+0

Haben Sie eine Antwort auf Ihre Frage gefunden? Ich habe das gleiche Problem. –

1
<item android:state_selected="false" 
    android:drawable="?unread_background" /> 

Dieser obige Abschnitt ist falsch.

Das Zeichen kann nur einen Verweis auf eine ausklappbare Ressource enthalten. Bitte sehen Sie diesen Link. http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList

+0

Gemäß der Dokumentation (http://developer.android.com/reference/android/graphics/drawable/BitmapDrawable.html#attr_android:src) kann das src-Attribut in einem BitmapDrawable jedoch ein theme-Attribut sein. –

+1

Selbst wenn das Attribut eine Referenz wäre und der Stil ein Zeichen wäre, würde das System dennoch zum Absturz gebracht, da Android nur benutzerdefinierte Attribute (? Was auch immer) in Views verwendet (zumindest habe ich das abgeleitet - das möchte ich wirklich) aber falsch liegen!) – HGPB

1

Hier ist etwas, das von mir funktioniert.

attrs.xml:

<attr name="color_selection" format="reference"/> 

styles.xml, als Kind des Hauptthema:

<item name="color_selection">@color/selection_background_inverse</item> 

shape_background_selected.xml in ziehbar Ordner:

<shape xmlns:android="http://schemas.android.com/apk/res/android"> 
    <solid android:color="?attr/color_selection"/> 
</shape> 

Ihre Wähler Datei, in meinem Fall: selector_background_recyclerview:

<selector xmlns:android="http://schemas.android.com/apk/res/android"> 
    <item android:drawable="@drawable/shape_background_selected" android:state_activated="true" /> 
    <item android:drawable="@drawable/shape_background_selected" android:state_pressed="true" /> <!-- pressed --> 
    <item android:drawable="@color/transparent" /> <!-- default --> 
</selector> 

schließlich in xml Ihre Ansicht ist:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:background="@drawable/selector_recyclerview_item_background"../> 
Verwandte Themen