M
MandraKobold
Ambitioniertes Mitglied
- 3
Hallo,
ich habe mal wieder zwei Probleme, diesesmal dreht sich alles um eine Checkbox und deren StateList.
Folgendes:
Eine Checkbox soll eine StateListDrawable -'Liste' über die Methode setButtonDrawable() übergeben werden, im Code (kein XML).
Problem 1:
Nach dem hinzufügen, ist der Button nur mit einem Drawable belegt, wenn das Checkbox checked ist, ansonsten ist kein Bildvorhanden....
Problem 2:
Bei dem Drawable 'drawableChecked' handelt es sich um einen einfaches png das in den ressourcen liegt. Die Farbe dieses 'Bildes' soll aber zur laufzeit abgeändert werden, was eigentlich über die folgende Methode passieren könnte:
allerdings wird die Farbe nicht geändert, das Icon wird immer in der orginal Farbe angezeigt.
Ändere ich die Farbe und benutze das Drawable als Hintergrund für die gesamte Checkbox, so ist die Farbe geändert.
Warum ist das so?? Funktioniert der PorterDuff nicht für StateListDrawbale?? Ist in der Überlegung ein Fehler??
Würde mich sehr freuen wenn jemand einen Hinweis oder gar eine Lösung hätte ;-)
Danke
ich habe mal wieder zwei Probleme, diesesmal dreht sich alles um eine Checkbox und deren StateList.
Folgendes:
Eine Checkbox soll eine StateListDrawable -'Liste' über die Methode setButtonDrawable() übergeben werden, im Code (kein XML).
Code:
StateListDrawable stateList = new StateListDrawable();
int stateChecked = android.R.attr.state_checked;
stateList.addState(new int[] { stateChecked }, new LayerDrawable(
new Drawable[] { drawableBackground, drawableChecked }));
stateList.addState(new int[] { -stateChecked }, new LayerDrawable(
new Drawable[] { drawableBackground }));
stateList.addState(new int[] {}, drawableBackground);
checkBox.setButtonDrawable(stateList);
Nach dem hinzufügen, ist der Button nur mit einem Drawable belegt, wenn das Checkbox checked ist, ansonsten ist kein Bildvorhanden....
Problem 2:
Bei dem Drawable 'drawableChecked' handelt es sich um einen einfaches png das in den ressourcen liegt. Die Farbe dieses 'Bildes' soll aber zur laufzeit abgeändert werden, was eigentlich über die folgende Methode passieren könnte:
Code:
drawableChecked.setColorFilter(newColor,
android.graphics.PorterDuff.Mode.SRC_ATOP);
Ändere ich die Farbe und benutze das Drawable als Hintergrund für die gesamte Checkbox, so ist die Farbe geändert.
Warum ist das so?? Funktioniert der PorterDuff nicht für StateListDrawbale?? Ist in der Überlegung ein Fehler??
Würde mich sehr freuen wenn jemand einen Hinweis oder gar eine Lösung hätte ;-)
Danke