Семейство шрифтов SwitchCompat не изменится

Я использую Android Studio и имею виджет SwitchCompat в моей основной деятельности. Семейство шрифтов по умолчанию было sans-serif-medium, и я изменил его на quicksand_light. У меня также есть несколько TextViews, для каждого из которых в fontfamily установлено значение quicksand_light. На вкладке "Дизайн" xml-файла для моей деятельности он показывает SwitchCompat, имеющий шрифтовую семью quicksand_light так же, как TextViews, но когда я запускаю его на своем телефоне или на эмуляторе, шрифтовая семья SwitchCompat выглядит как sans-serif-medium. Что-то еще нужно сделать, чтобы изменить семейство шрифтов, или это ошибка, или это только я?

1 ответ

Я не углубился в то, почему это не работает правильно при определении fontFamily атрибут в XML, но это работает, если вы устанавливаете гарнитуру программно.

Вот пример использования привязки данных.

Добавьте следующий адаптер привязки данных:

@BindingAdapter("labelTypeface")
fun setLabelTypeface(view: SwitchCompat, @FontRes id: Int) {
    view.typeface = ResourcesCompat.getFont(view.context, id)
}

и использовать его в макете:

<android.support.v7.widget.SwitchCompat
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    app:labelTypeface="@{R.font.stratum}"
    ... />

Единственный способ установить семейство шрифтов на большом пальце переключателя (а не на его метке) - это:

    my_switch.setSwitchTypeface(ResourcesCompat.getFont(context, R.font.my_font))
Другие вопросы по тегам