我正在使用Android Studio,并且在我的主要 Activity 中有一个SwitchCompat小部件。它的默认字体家族是sans-serif-medium,我将其更改为quicksand_light。我还有一些TextView,它们的每个fontfamily都设置为quicksand_light。在针对我的 Activity 的xml文件的“设计”选项卡上,它显示了SwitchCompat与文本 View 一样具有quicksand_light字体家族,但是当我在手机或仿真器上运行它时,SwitchCompat的字体家族是sans-serif-medium。我需要做些额外的事情来更改fontfamily还是这是Bug还是仅我一个?

最佳答案

我还没有深入探讨为什么在xml中定义fontFamily属性时它不能正常工作,但是如果您以编程方式设置字体,那么可以解决这个问题。

这是使用数据绑定(bind)的示例。

添加以下数据绑定(bind)适配器:

@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}"
    ... />

08-06 10:40