You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何仅通过XML与styles标签在Android中全局应用Roboto字体(minSdk15)

仅用XML和Styles全局应用Roboto字体(适配minSdk15)

我帮你梳理下完全依靠XML和styles标签实现全局应用Roboto字体的方案,完美适配minSdk15:

1. 准备字体文件

首先把你的Roboto系列.ttf文件(比如Roboto-Regular.ttf、Roboto-Bold.ttf等)放到项目的src/main/assets/fonts目录下,如果没有assets/fonts目录就手动创建。

2. 定义Roboto字体样式

在res/values/styles.xml中创建针对不同字重的文本样式,基于AppCompat库的文本样式扩展,确保低版本兼容:

<!-- 常规Roboto字体样式 -->
<style name="TextAppearance.Roboto.Regular" parent="@style/TextAppearance.AppCompat">
    <item name="android:typeface">sans-serif</item> <!-- 系统 fallback,避免字体加载失败 -->
    <item name="fontPath">fonts/Roboto-Regular.ttf</item> <!-- 指定assets中的字体路径 -->
</style>

<!-- 加粗Roboto字体样式 -->
<style name="TextAppearance.Roboto.Bold" parent="@style/TextAppearance.AppCompat">
    <item name="android:typeface">sans-serif-bold</item>
    <item name="fontPath">fonts/Roboto-Bold.ttf</item>
</style>

<!-- 斜体Roboto字体样式 -->
<style name="TextAppearance.Roboto.Italic" parent="@style/TextAppearance.AppCompat">
    <item name="android:typeface">sans-serif-italic</item>
    <item name="fontPath">fonts/Roboto-Italic.ttf</item>
</style>

3. 全局应用到App主题

在你的App主主题中,将默认的文本外观替换为我们定义的Roboto样式,这样整个项目的控件都会自动继承该字体:

<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <!-- 你的主题基础属性 -->
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>

    <!-- 全局设置默认文本为Roboto常规体 -->
    <item name="android:textAppearance">@style/TextAppearance.Roboto.Regular</item>
    <item name="textAppearance">@style/TextAppearance.Roboto.Regular</item> <!-- 兼容AppCompat -->

    <!-- 可选:针对特定文本类型单独设置字体(比如标题、按钮用加粗) -->
    <item name="android:textAppearanceHeadline1">@style/TextAppearance.Roboto.Bold</item>
    <item name="textAppearanceHeadline1">@style/TextAppearance.Roboto.Bold</item>
    <item name="android:textAppearanceButton">@style/TextAppearance.Roboto.Bold</item>
    <item name="textAppearanceButton">@style/TextAppearance.Roboto.Bold</item>
</style>

关键注意点

  • 确保你的项目依赖了AppCompat库(AndroidX版本),在build.gradle(Module级别)中添加依赖:
    implementation 'androidx.appcompat:appcompat:1.6.1'
    
  • 因为minSdk15原生控件不支持自定义字体的XML配置,所以App主题必须继承AppCompat主题(比如Theme.AppCompat.*),这样所有原生控件会自动替换为AppCompat版本(如AppCompatTextView),从而支持fontPath属性。

内容的提问来源于stack exchange,提问作者user5826166

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.15 03:34:45