2016-03-24 16 views
0

Ich muss die Standardfarben des Switch-Steuerelement in Android ändern (ich benutze Xamarin, aber es sollte nicht so anders sein als native).Android Switch Farbwechsel

Erwartete endgültige Vorlage Ergebnis:https://www.google.com/design/spec/components/selection-controls.html#selection-controls-switch

Dies ist die Standardschaltersteuerung in Android 5.0, aber ich mag von grün, die Farbe ändern, sowohl zu einer anderen Farbe in der Spur und Daumen.

Was ich mache Ich habe eine Methode gefunden, die fast funktioniert, aber das Ergebnis ist nicht das, was ich will. Die Methode ist:

var color = Color.Rgb(101, 127, 135); 
NearSwitch.TrackDrawable.SetColorFilter(color, PorterDuff.Mode.Multiply); 

Problem: Ich kann nicht die genaue Farbe in der Spur gesetzt. Die Farbe, die ich einstelle, ist # 657f87 oder 101, 127, 135 in RGB, aber, wahrscheinlich aufgrund des PorterDuff-Modus und Track-Vorlage/Transparenz, ist die endgültige Farbe nicht die, die ich eingestellt habe.

Wenn ich versuche, den PorterDuff-Modus in SRC oder eine andere zu ändern, kann ich sehen, dass die Spur ein Rechteck mit zwei verschiedenen Farben statt einer einzigen mit Rändern ist (als Standard von Android).

Ich möchte nicht die gesamte Vorlage neu schreiben, wenn möglich. Irgendeine Idee?

Antwort

0

Ihr PorterDuff ist auf "Multiply" eingestellt. Daher wird Ihre neue Farbe mit der Grundfarbe des Schalters gemischt.

Ty Verwendung:

NearSwitch.TrackDrawable.SetColorFilter(color, PorterDuff.Mode.SRC_IN); 
+0

Dies erzeugt eine andere Farbe (# bac5c9 oder 186, 197, 201 in RGB), die noch nicht richtig ist. – xTuMiOx