Ich verwende setColorFilter
, um den Farbfilter von einem meiner Taste zu setzen. Dies funktioniert bis zum Android 5.0 Lollipop Update perfekt. Jetzt scheint der Farbfilter auf meine anderen Schaltflächen zu treffen, selbst wenn ich die Aktivität schließe und erneut öffne (sie wird zurückgesetzt, wenn ich die App schließe und erneut öffne).Android 5.0 Lollipop: setColorFilter "leckt" auf andere Tasten
Mein styles.xml (v21): (wie bei älteren außer hier ihre Mutter ist Material, bevor es Holo war)
<style name="Theme.FullScreen" parent="@android:style/Theme.Material.Light.NoActionBar.Fullscreen">
<item name="android:buttonStyle">@style/StandardButton</item>
<item name="android:windowTranslucentStatus">true</item>
</style>
Mein styles.xml (für alle Versionen):
<style name="StandardButton" parent="android:style/Widget.Button">
<item name="android:background">@android:drawable/btn_default</item>
</style>
My Button:
<Button
android:id="@+id/mainMenuButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:onClick="mainMenu"
android:text="@string/button_mainMenu"
android:visibility="gone" />
Mein Code:
Button mainMenuButton = (Button) findViewById(R.id.mainMenuButton);
mainMenuButton.getBackground().setColorFilter(new PorterDuffColorFilter(getResources().getColor(R.color.light_green), PorterDuff.Mode.MULTIPLY));
mainMenuButton.setVisibility(View.VISIBLE);
Die Farbe:
<color name="light_green">#5CD65C</color>
Das Ergebnis:
ich die App öffnen, dann die Spielaktivität und alle Tasten sind korrekt angezeigt werden. Ich drücke den Knopf, um den Farbfilter einzustellen, gehe zurück zum Hauptmenü und öffne die Spielaktivität und nun sind alle Knöpfe grün.
Irgendwelche Ideen?
Wenn ich Ihre Antwort, die ich vor Freude sprang lesen, da es so einfach und intuitiv schien (ich hatte nie 'vor dem' mutieren() zu hören). Ich eilte zu meinem Projekt und implementierte Ihre Lösung und leider funktioniert es nicht. Alle meine Tasten werden immer noch grün. Ich habe sogar versucht: 'background = background.mutate();' und dann die Filter auf das, aber die Tasten noch grün. Ich weiß nicht, was anderes zu versuchen (außer zu nennen 'Clear()' auf allen anderen Tasten, die funktionieren, aber sind wirklich Code-hässlich). – Johis