Android 字体未通过样式应用于按钮

Android font is not applied for button via style

我为 Button

创建了样式
<style name="MainButtonStyle">
    <item name="android:background">@drawable/btn_main_selector</item>
    <item name="android:textColor">@color/btn_main_text_color_selector</item>
    <item name="android:minHeight">40dp</item>
    <item name="android:textSize">18sp</item>
    <item name="android:gravity">center</item>
    <item name="android:textAppearance">@font/bold</item>
</style>

此样式适用于 AppTheme

 <item name="android:buttonStyle">@style/MainButtonStyle</item>

bold.ttf 文件在 res/font 文件夹中

如果我 运行 一个应用程序,我仍然会看到默认字体。问题在哪里?

使您的按钮样式继承父按钮样式,例如

<style name="MainButtonStyle" parent="Widget.AppCompat.Button">

试试这个:

<style name="MainButtonStyle">
    <item name="android:background">@drawable/btn_main_selector</item>
    <item name="android:textColor">@color/btn_main_text_color_selector</item>
    <item name="android:minHeight">40dp</item>
    <item name="android:textSize">18sp</item>
    <item name="android:gravity">center</item>
    <item name="fontFamily">@font/bold</item>
</style>

textAppearance 允许您定义特定于文本的样式:字体系列、字体颜色、大小等。它不用于引用字体资源。

只需使用fontFamily属性设置xml中的字体即可:

<style name="MainButtonStyle">
    ...
    <item name="fontFamily">@font/bold</item>
</style>

<style name="MainButtonTextAppearance">
    <item name="android:textColor">@color/btn_main_text_color_selector</item>
    <item name="android:textSize">18sp</item>
    <item name="fontFamily">@font/bold</item>
</style>

<style name="MainButtonStyle">
    <item name="android:background">@drawable/btn_main_selector</item>
    <item name="android:minHeight">40dp</item>
    <item name="android:gravity">center</item>
    <item name="android:textAppearance">@Style/MainButtonTextAppearance</item>
</style>