2016-03-30 5 views
1

Ich habe meine App auf meinem neuen Gerät mit Android 5.1.1 getestet. In meiner SettingsActivity habe ich einen Schalter. Ich habe schon einige Posts gelesen und habe sie in android.support.v7.widget.SwitchCompat geändert, aber das Problem ist immer noch folgendes: Auf meinem alten Gerät sieht der Switch sehr nett aus. Sie können zwei Texte für textOn und textOff setzen und es passt perfekt. aber da api 21 oder was auch immer ich dieses kleine Bastard bekommen hier:Android SwitchCompat Stil

enter image description here

Es ist wie **** aussieht. Wie kann ich es für alle Geräte wie den Lollipop-Schalter neu gestalten?

Bearbeiten: Die obige Frage ist beantwortet. Ein kleine Sache fehlt: Wie die Farbe des Textes auf dem Schalter ändern (nicht den Tag auf der linken Seite !!!)

styles.xml

<style name="SwitchTextAppearance" parent="TextAppearance.AppCompat.Widget.Switch"> 
     <item name="android:textSize">12sp</item> 
     <item name="android:textColor">#3F51B5</item> 
    </style> 

Layout.. xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    android:orientation="horizontal" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingLeft="8dp" 
    android:paddingRight="8dp" 
    android:paddingBottom="12dp" 
    android:paddingTop="12dp"> 

    <android.support.v7.widget.SwitchCompat 
     android:id="@+id/mySwitch" 
     android:layout_width="match_parent" 
     android:switchMinWidth="56dp" 
     android:layout_height="wrap_content" 
     android:switchTextAppearance="@style/SwitchTextAppearance" 
     android:thumb="@drawable/thumb" 
     android:track="@drawable/track" 
     app:showText="true" 
     android:textOn="ON" 
     android:textOff="OFF" 
     android:text="Toggle Switch" 
     android:textAppearance="?android:attr/textAppearanceMedium" 
     android:background="@android:color/transparent" 
     android:button="@null" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentRight="true"/> 

</RelativeLayout> 
+0

Können Sie das 'Layout' und alle relevanten' style' xmls posten? –

+0

Ich denke, ich habe es. Haben Sie eine Idee, wie Sie die Farbe des switchButton-Textes ändern können? –

+1

Ich aktualisierte meine Antwort, fügte dem Stil Textfarbe hinzu. –

Antwort

3

Mit SwitchCompat.setSwitchTextAppearance Sie den Stil für den Text festlegen können, die sich innerhalb des Schalters erscheint.

einen Stil so etwas wie dieses hinzufügen und legen Sie es setSwitchTextAppearance mit:

<style name="SwitchTextAppearance" parent="TextAppearance.AppCompat.Widget.Switch"> 
    <item name="android:textSize">12sp</item> 
    <item name="android:textColor">#3F51B5</item> 
</style> 

Und Sie sollten die Größe, Farbe usw. Ihres „OFF“ Text anpassen können.

+0

Ich habe Ihr Muster verwendet, aber es scheint nicht zu funktionieren android: switchTextAppearance = "@ style/SwitchTextAppearance" –

+2

Das wird nicht funktionieren, weil 'android: switchTextAppearance =" @ style/SwitchTextAppearance "' ist kein anerkanntes Attribut. Sie müssen den 'xmlns: app =" http://schemas.android.com/apk/res-auto "' Namespace verwenden, also wäre es wie 'app: switchTextAppearance =" @ style/SwitchTextAppearance "' –

+0

Ich bearbeite mein Beitrag ^^ –

Verwandte Themen