Семейство шрифтов 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))