2016-09-19 4 views
2

Ich habe ein Problem, wenn ich versuche, einen Attr in ein benutzerdefiniertes Zeichen-XML einzufügen.Wie setze ich einen Attr in ein benutzerdefiniertes Zeichenfeld?

Hier ist eine Probe meiner Layout:

 <Button 
      android:id="@+id/btn" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:background="@drawable/my_custom_btn"/> 

meine Gewohnheit ziehbar Then "my_custom_btn", ich will seine Farbe mit attr_my_custom_color angeben:

<?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item android:state_pressed="true" 
      android:drawable="?attr/attr_my_custom_color" /> <!-- pressed --> 
    </selector> 

Meine attr.xml Datei:

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

Und meine style.xml-Datei, meine Appli Kation wird mit diesem Thema (in meinem Manifest):

<resources> 
<style name="AppThemeTest" parent="Theme.AppCompat.Light.NoActionBar"> 

    <item name="attr_my_custom_color">@color/primary</item> 

</style> 

Mein attr funktioniert gut, wenn ich es in meinem Layout testen, aber wenn ich es in meinem benutzerdefinierten ziehbar setzen, es funktioniert nicht.

Es kompiliert gut, aber wenn ich meine app starten, zeigt es diesen Fehler:

Verursacht durch: org.xmlpull.v1.XmlPullParserException: Binary XML-Datei Zeile # 4: Tag erfordert eine 'ziehbar' Attribut oder Untertag, das einen Zeichensatz definiert

Können Sie mir helfen, einen Attr in einem benutzerdefinierten Zeichenfeld anzugeben?

Antwort

0
you have to change background to drawable 


<Button 
     android:id="@+id/btn" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:drawable ="@drawable/my_custom_btn"/> 
+0

Es stürzt nicht mehr, aber es gilt nicht ' 'entweder. – curiousStranger123

+0

Was ist deine MinSdkVersion? –

+0

minSdkVersion 16 – curiousStranger123

Verwandte Themen