2016-11-09 2 views
-2

Wir haben ein Kontrollkästchen in einer Listview, dessen Hintergrundbild sich entsprechend dem Inhalt des Listenansichtselements ändern muss, wie die Gmail-E-Mail-Listenansicht. enthältZeichnbaren XML-Inhalt programmatisch ändern

jetzt Unser Ansatz ist es mit Hilfe der android:button="@drawable/startcheckbox" Option das Kontrollkästchen Hintergrund festlegen, wo startcheckbox ein xml im ziehbar Ordner ist:

<?xml version="1.0" encoding="utf-8"?> 
    <selector xmlns:android="http://schemas.android.com/apk/res/android"> 
     <item android:state_checked="false" android:drawable="@drawable/star_rate_white_54x54" /> 
     <item android:state_checked="true" android:drawable="@drawable/star_rate_yellow_54x54" /> 
     <item android:drawable="@drawable/star_rate_white_54x54" /> <!-- default state --> 
    </selector> 

Meine Frage ist, wie können wir die state_checked="false" und state_checked="true" von innen ändern das Fragment, in das die Listenansicht eingefügt wird.

+0

Sie können den Inhalt einer XML-Ressource-Datei nicht programmgesteuert auf Android ändern. – njzk2

+0

Verwenden Sie eine andere Ressource-Datei – njzk2

+0

siehe 'StateListDrawable' Dokumentation – pskink

Antwort

0

Mutieren Sie das Zeichen über Drawable.mutate(), dann können Sie ändern, was Sie wollen.

Im Allgemeinen, obwohl ich finde, dass, wenn Sie etwas programmatisch mit einem anderen Zeichnungs als skalieren wollen, Sie besser xml vermeiden und Code und benutzerdefinierte Zeichenvorlagen verwenden.

+0

nicht wirklich,' StateListDrawable' hat sehr begrenzte API, in der Tat können Sie nur einen neuen Zustand hinzufügen: 'addState (int [] stateSet, Drawable zeichnbar)' – pskink

+0

Ive done es vorher, ich werde sehen, ob ich den Code ausgraben kann. Ich glaube, ich habe den gleichen Staat außer Kraft gesetzt? –

Verwandte Themen