スイッチウィジェットの動作は、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"
/>
TargetSdkVersion = 19の場合のレンダリングされたスイッチ:
TargetSdkVersion = 21の場合のレンダリングされたスイッチ:
Android Studioは引き続きテキスト付きのスイッチを生成しますが、targetSdkVersion = 21で構築されたapkがLollipop(Nexus 5)を搭載したデバイスで実行されると、スイッチはテキストを失います。同じLollipopデバイスでtargetSdkVersion = 19を使用してビルドされたapkは、期待どおりにテキストでスイッチを適切にレンダリングします。
どうして?推奨される回避策はありますか?
スイッチウィジェットアセットはテキストではうまく機能しないため、デフォルトではテキストはマテリアルテーマの下に表示されません。設定したテキストは、アクセシビリティサービスにコンテンツを説明するために使用されます。
これは _Android:showText
_ プロパティまたは Switch.setShowText(boolean)
メソッドを使用して変更できます。
_<Switch
...
Android:showText="true" />
_
AppCompatスイッチを使用している場合は、代わりに_app:showText
_を使用します。