Le comportement du widget switch a changé dans Lollipop (5.0).
<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"
/>
Commutateur rendu lorsque targetSdkVersion = 19:
Commutateur rendu lorsque targetSdkVersion = 21:
Notez que l'aperçu du rendu dans Android Studio produit toujours un commutateur avec du texte, mais le commutateur perd son texte lorsqu'un apk construit avec targetSdkVersion = 21 est exécuté sur un appareil avec Lollipop (Nexus 5). une apk construite avec targetSdkVersion = 19 sur le même appareil Lollipop rend le commutateur correctement avec du texte comme prévu.
Pourquoi? Des solutions de contournement suggérées?
Le texte n'est pas affiché par défaut sous le thème Matériau, car les actifs du widget de commutation ne fonctionnent pas bien avec le texte. Tout texte que vous définissez sera utilisé pour décrire le contenu des services d'accessibilité.
Vous pouvez changer cela en utilisant la propriété Android:showText
ou la méthode Switch.setShowText(boolean)
.
<Switch
...
Android:showText="true" />
Si vous utilisez des commutateurs AppCompat, utilisez plutôt app:showText
.