Ich benutze benutzerdefinierte Schalter für die Unterstützung von API 8. Ich verwende DIES Libarary für benutzerdefinierte Switch. Aber ich möchte etwas wie Show in Abbildung machen. Ich habe versucht, die Farbe zu ändern, obwohl die Farbe im Stil ändert, aber nicht wie ich will.
Bitte helfen Sie mir, Danke im Voraus.
Hier ist eine vollständige, funktionierende Lösung, nach einem spaßigen Tag, der dies implementiert.
Verwenden Sie Folgendes, um das Zeichen für die Spur des Schalters festzulegen. Die Spur ist der Container, in dem der Daumen nach links und rechts verschoben wird.
%Vor% Hier ist die Implementierung von SwitchTrackTextDrawable
, die den Text im Hintergrund genau an der richtigen Stelle schreibt (gut, ich habe es nur für API 23 auf einem Nexus 5 getestet):
Versuchen Sie es mit
%Vor%statt
%Vor%in Schaltern.
Sie können auch durch dies gehen, wenn es hilft.
Ich habe ein benutzerdefiniertes Layout erstellt, das ein lineares Layout enthält (wird als eine Spur des Schalters verwendet). In diesem Layout habe ich zwei Texte platziert, um die "An" / "Aus" Texte zu simulieren. Es hat einen normalen Schalter, aber keine Spur, nur einen Daumen mit transparenter Spur.
Wie auch immer, das ist der Code:
colors.xml
%Vor%settings_switch_color_selector
%Vor%styles.xml
%Vor%new_switch.xml - wird in der benutzerdefinierten Ansicht verwendet
%Vor%Dies ist eine benutzerdefinierte Ansicht - sie dient nur dazu, das Layout der benutzerdefinierten Ansicht aufzublähen
%Vor%Es gibt einen, der mit 2 Standardtasten und einem LinearLayout erstellt wurde. Es gibt eine Menge von XML-Dateien zum Importieren, aber es funktioniert perfekt auf allen Versionen und sehr einfach zu bedienen. Überprüfen Sie die folgende Github-Seite
Benutzerdefinierter Schalter mit 2 Tasten
SekizbitSwitch mySwitch = new SekizbitSwitch(findViewById(R.id.sekizbit_switch));
mySwitch.setOnChangeListener(new SekizbitSwitch.OnSelectedChangeListener() {
@Override
public void OnSelectedChange(SekizbitSwitch sender) {
if(sender.getCheckedIndex() ==0 )
{
System.out.println("Left Button Selected");
}
else if(sender.getCheckedIndex() ==1 )
{
System.out.println("Right Button Selected");
}
}
});
Nachdem ich darum gekämpft hatte, die richtige Lösung dafür zu finden, fand ich diese nette kleine Bibliothek . Ich fand es einfach zu bedienen und es hat meine Bedürfnisse perfekt erfüllt. Es kann sogar verwendet werden, um more als 2 Werte anzuzeigen.
So habe ich es schließlich mit etwas mehr Styling aussehen lassen, wie zum Beispiel mit der weißen Umrandung, die ich um eine FrameLayout
umgebe, die es umhüllt (ich musste es so aussehen lassen, du brauchst keine Umrandung) :
Hier ist das XML dafür:
%Vor% Und @drawable/white_border
sieht so aus:
Tags und Links android switch-statement custom-component