Подтвердить что ты не робот

Android-переключатель widget textOn и textOff не работает в 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"
        />

Выделенный переключатель, когда targetSdkVersion = 19:

enter image description here

Выделенный переключатель, когда targetSdkVersion = 21:

enter image description here

Обратите внимание, что предварительный просмотр в Android Studio по-прежнему создает переключатель с текстом, но коммутатор теряет текст, когда apk, созданный с помощью targetSdkVersion = 21, запускается на устройстве с Lollipop (Nexus 5). Запуск apk, созданного с помощью targetSdkVersion = 19 на том же устройстве Lollipop, корректно отображает переключатель с текстом, как ожидалось.

Почему? Любые предлагаемые способы обхода?

4b9b3361

Ответ 1

Текст не отображается по умолчанию в разделе Тема материала, поскольку активы виджета коммутатора плохо работают с текстом. Любой текст, который вы установили, будет использоваться для описания содержимого для служб доступности.

Вы можете изменить это, используя свойство android:showText или Switch.setShowText(boolean).

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

Если вы используете коммутаторы AppCompat, используйте app:showText вместо этого.