7

我正在使用 Android Studio 并在我的主要活动中有一个 SwitchCompat 小部件。它的默认字体系列是 sans-serif-medium,我将其更改为 quicksand_light。我也有一些 TextViews,它们的每个 fontfamily 都设置为 quicksand_light。在我的活动的 xml 文件的设计选项卡上,它显示 SwitchCompat 具有与 TextViews 一样的 quicksand_light 字体系列,但是当我在手机或模拟器上运行它时,SwitchCompat 的字体系列是无衬线字体。我需要做一些额外的事情来更改字体家族还是这是一个错误还是这只是我?

4

2 回答 2

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}"
    ... />
于 2018-01-24T20:32:19.820 回答
0

我能够在开关的拇指(不是它的标签)上设置字体系列的唯一方法是:

    my_switch.setSwitchTypeface(ResourcesCompat.getFont(context, R.font.my_font))
于 2019-09-10T00:28:46.837 回答