2014-12-03 13 views
40

Il comportamento del widget switch è cambiato in Lollipop (5.0).Android Switch widget textOn e textOff non funziona in 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" 
     /> 

interruttore rendering quando targetSdkVersion = 19:

enter image description here

interruttore rendering quando targetSdkVersion = 21:

enter image description here

Nota che prevedono il rendering in Android Studio produce ancora un interruttore con il testo, ma l'interruttore perde il suo testo quando un apk creato con targetSdkVersion = 21 è ru n su un dispositivo con Lollipop (Nexus 5). L'esecuzione di un apk creato con targetSdkVersion = 19 sullo stesso dispositivo Lollipop rende lo switch correttamente con testo come previsto.

Perché? Qualche soluzione alternativa suggerita?

risposta

98

Il testo non viene visualizzato per impostazione predefinita in Tema materiale poiché le risorse del widget interruttore non funzionano correttamente con il testo. Qualsiasi testo che imposti verrà utilizzato per descrivere il contenuto ai servizi di accessibilità.

È possibile modificare questo utilizzando la proprietà android:showText o il metodo Switch.setShowText(boolean).

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

Se si utilizza switch AppCompat, utilizzare app:showText invece.

+0

Grazie, anche questo mi ha aiutato. – Kitalda

+0

Questo attributo è effettivamente supportato dal livello API 21 in poi. – manfcas

+0

Sembra non funzionare più, utilizzando 23.4.0 in esecuzione su un dispositivo N-Preview3. Modifica: dovrebbe essere 'app: showText =" true "' – behelit

Problemi correlati