2014-12-03 7 views
40

Zachowanie widżetu przełącznika zmieniono w Lollipop (5.0).Android Przełącznik widżetu textOn i textOff nie działa w Lollipop

<Switch 
     android:id="@+id/switcher" 
     android:layout_width="wrap_content" 
     android:layout_height="0dp" 
     android:layout_marginBottom="16dp" 
     android:layout_marginRight="8dp" 
     android:layout_marginEnd="8dp" 
     android:layout_toEndOf="@id/another_view" 
     android:layout_toRightOf="@id/another_view" 
     android:layout_alignParentRight="true" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentBottom="true" 
     android:textOff="@string/disabled" 
     android:textOn="@string/enabled" 
     android:fontFamily="sans-serif-condensed" 
     /> 

Przedstawiane przełącznik kiedy targetSdkVersion = 19:

enter image description here

Przedstawiane przełącznik kiedy targetSdkVersion = 21:

enter image description here

Zauważ, że wyświetlić podgląd renderowania w Android Studio nadal produkuje przełącznik z tekstem, ale przełącznik traci tekst, gdy apk zbudowany z targetSdkVersion = 21 jest ru n na urządzeniu z Lollipop (Nexus 5). Uruchamianie apk zbudowanego z targetSdkVersion = 19 na tym samym urządzeniu Lollipop powoduje, że przełącznik jest poprawnie wyświetlany zgodnie z oczekiwaniami.

Dlaczego? Jakieś sugerowane obejścia?

Odpowiedz

98

Tekst nie jest domyślnie wyświetlany w obszarze Motyw materiałowy, ponieważ zasoby widgetu przełącznika nie działają dobrze z tekstem. Każdy ustawiony tekst zostanie wykorzystany do opisania zawartości w usługach ułatwień dostępu.

Możesz to zmienić, używając metody android:showText lub Switch.setShowText(boolean).

<Switch 
    ... 
    android:showText="true" /> 

Jeśli używasz przełączników AppCompat, zamiast używać app:showText.

+0

Dziękuję, pomogło mi to również. – Kitalda

+0

Ten atrybut jest rzeczywiście obsługiwany od poziomu interfejsu API 21 i nowszych. – manfcas

+0

Wygląda na to, że nie działa, używając 23.4.0 na urządzeniu N-Preview3. Edytuj: Powinien być 'app: showText =" true "' – behelit