Android Switch小部件textOn和textOff在Lollipop中不起作用

Jim*_*tek 52 android android-switch android-5.0-lollipop

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"
        />
Run Code Online (Sandbox Code Playgroud)

targetSdkVersion = 19时渲染切换:

在此输入图像描述

targetSdkVersion = 21时渲染切换:

在此输入图像描述

请注意,Android Studio中的预览渲染仍会生成带文本的开关,但是当使用Lollipop(Nexus 5)在设备上运行使用targetSdkVersion = 21构建的apk时,开关会丢失文本.在同一个Lollipop设备上运行使用targetSdkVersion = 19构建的apk,可以按预期正确显示开关.

为什么?任何建议的解决方法?

ala*_*anv 129

默认情况下,材料主题下不显示文本,因为切换窗口小部件资产不能很好地与文本一起使用.您设置的任何文本都将用于描述无障碍服务的内容.

您可以使用android:showText属性或Switch.setShowText(boolean)方法更改此设置.

<Switch
    ...
    android:showText="true" />
Run Code Online (Sandbox Code Playgroud)

如果您使用的是AppCompat交换机,请app:showText改用.

  • 这对于`android.support.v7.widget.SwitchCompat`来说是有效但不好的,因为文本然后在开关拇指上笨拙地可见. (9认同)
  • 使用在N-Preview3设备上运行的23.4.0,似乎不再起作用。编辑:应该是app:showText =“ true” (2认同)