Android O推出了一项新的功能「Fonts in XML」,借助这项功能,我们能够像使用其他资源文件一样使用字体,比较方便地实现App全局字体的替换。

为了能够在API 14或者以上的设备上使用Fonts in XML特性,我们需要使用到Support Library 26。更多的内容可以参考「使用Support Library」小节。

在Android Studio中按照如下步骤将字体作为资源文件添加至工程:

右键单击项目的 app / res 文件夹,然后选择 New > Android resource directory。

打开下拉菜单并选择 font,输入 font 作为File name,点击OK。

注意名称字体资源文件夹的名称必须为font

将字体文件拖放到新的 res / font 文件夹中。Android O支持 .otf(OpenType) 和 .ttf(TrueType) 两种格式的字体文件。

双击字体文件可以在编辑器中对字体进行预览。

创建Font family

在Android Studio中创建Font family的步骤如下:

右键单击项目的 res / font 文件夹,然后选择 New > Font resource file 。

输入文件名,然后点击 OK .

打开此XML文件并定义该字体的所有不同版本,以及其样式和权重属性,例如:

android:fontStyle="normal"

android:fontWeight="400"

android:font="@font/lobster_regular" />

android:fontStyle="italic"

android:fontWeight="400"

android:font="@font/lobster_italic" />

在XML布局中使用字体资源

给TextView添加字体

在XML布局文件中,将fontFamily设置为你想要的访问的字体文件:

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:fontFamily="@font/lobster"/>

打开 Properties 窗口,设置TextView的字体:

选择一种视图打开 Properties 窗口

展开 textAppearance ,选择fontFamily表中的一种字体类型。

添加字体至style

打开 style.xml 文件,将fontFamily属性设置为你想要访问的字体文件。

@font/lobster

在你的App的Theme中配置此属性即可实现整个App的字体替换。

使用代码控制字体

Typeface typeface = getResources().getFont(R.font.myfont);

textView.setTypeface(typeface);

使用Support Library

当我们通过 Support Library 实现 Fonts in XML 特性时,需要使用 app 命名空间。Support Library目前支持API 14及以上。

在Android Support Library 26.0-beta1中,必须同时使用android和app命名空间进行声明,以确保在Android O版本及以下设备上字体能够被正确加载。

xmlns:app="http://schemas.android.com/apk/res-auto">

app:fontStyle="normal" app:fontWeight="400" app:font="@font/myfont-Regular"/>

app:fontStyle="italic" app:fontWeight="400" app:font="@font/myfont-Italic" />

通过代码控制:

Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont);

内容均来自Android Developer官网,做了简单的翻译,水平有限,还请见谅,原地址: https://developer.android.com/preview/features/fonts-in-xml.html

更多内容:

另外,我在我的开源项目 TonnyL/PaperPlane 中使用 Fonts in XML 实现了App的字体的整体替换。效果如下:

android 自动替换资源文件,简单高效的实现Android App全局字体替换相关推荐

  1. idea自动更新java_IntelliJ IDEA自动更新资源文件

    在 Java Web 开发中, 一般更新了文件(例如jsp.css.js)后要手动重启 Tomcat 服务器, 才能生效, 生命宝贵啊.其实我简单得配置一下IntelliJ IDEA,即可实现自动更新 ...

  2. android studio各个资源文件夹以及作用备注

    src:存放所有的*.java源程序. gen:为ADT插件自动生成的代码文件保存路径,里面的R.java将保存所有的资源ID. assets:可以存放项目一些较大的资源文件,例如:图片.音乐.字体等 ...

  3. Android 工程打包资源文件-OBB文件设置

    Android 工程打包资源文件-OBB文件设置 设备/引擎:Mac(11.6)/cocos 开发工具:Android studio(4.1.2) 开发语言:java 开发需求:对工程的资源文件进行打 ...

  4. Android与iOS资源文件读写对比

    在开发中,算法配置文件是作为独立资源文件存在,初始化的时候读取到应用中,因此有必要对Android和iOS系统下的资源文件读写有一定的了解. 首先要搞清楚的一点是,我们在PC上开发时使用的所有资源,移 ...

  5. android app全局字体,Android app全局字体设置

    相信很多对设计追求极致的开发者们对Android系统的默认字体都会感到不满意,这个时候需要使用自定义的字体,当然可以使用系统提供的Typeface来加载自定义字体,但是,一个个TextView的设置, ...

  6. android中的资源文件

    资源是你在代码中使用到的并且在编译时被打包进你的应用程序的附加文件.Android支持多种不同的文件,包括XML.PNG和JPEG文件.XML文件的格式决定于其描述的内容.这些文件将描述文件支持的类型 ...

  7. ANDROID XML图像资源文件详细讲解(一)

    图像资源在android开发过程中使用非常平凡.为了让自己在开发中,能轻松解决任何有关图像的问题,所以必须全面掌握最基本的知识点----各种类型的图像资源文件. 前言: 前言的前言:因为内容较多,此系 ...

  8. Android自定义没有资源文件的圆形进度条ProgressBar

    最近公司开发的SDK中需要使用圆形加载进度条,而且说要那种动态的转圈圈的那种进度条.当然这种进度条想实现很简单,用几个资源图片,以动画循环播放就行.但考虑到是SDK,有资源文件不好打包,想打包就要用到 ...

  9. Android 重新编译资源文件

    在开发过程中,尤其是Framework相关开发时,有时候需要重新编译资源文件.编译顺序和注意事项如下: 1,资源文件位置:frameworks/base/core/res 2,编译后生成的文件:fra ...

最新文章

  1. springboot 订单重复提交_Spring Boot (一) 校验表单重复提交
  2. 关于Messenger实现进程间通信
  3. Android TextView 初步学习
  4. 程序员是终身学习的职业,应该怎么学习?
  5. 垃圾回收:引用计数与分代收集机制
  6. 深度优先算法解决有向有权图的最短路径问题
  7. 约5亿条!华住旗下酒店开房信息泄露于“暗网”售卖,你改密码了吗?
  8. 计算机类毕业设计源码大全
  9. 77. Combinations
  10. GAE(Generalized Advantage Estimation) PPO
  11. Are You a Software Architect?
  12. 云计算数据中心运维管理的五大重点
  13. 笔算开2次方根、3次方根详细教程
  14. IO流_递归、IO流总结
  15. Field brandService in cn.est.service.impl.HomeServiceImpl required a bean of type ‘cn.est.service.Br
  16. 金蝶k3单据编码规则_编码规则
  17. 2021年上海交通大学计算机系考研机试题
  18. 对超级计算机的看法,超级计算机:你对它有正确的认识吗?超级计算机排名2021.docx...
  19. 国内GIS有哪些大niu?他们的研究方向分别是什么呢?
  20. 【ARMv8基础篇】400系列控制器IP

热门文章

  1. Beej网络编程指南《一》
  2. 180余件河北武强年画珍品亮相新疆昌吉回族自治州博物馆
  3. 1+X Web前端等级考证 | 2020 12月Web前端开发中级理论 (模拟试题第三套) 附答案
  4. Personalized Federated Learning with Moreau Envelopes论文阅读+代码解析
  5. single-spa结合vue项目初探
  6. Hbase的scan原理
  7. 桌面端如何运行小程序?
  8. JBPM学习入门(一) 配置JBPM运行环境
  9. 《禅与摩托车维修艺术》书摘
  10. HTML中字体属性、文本属性使用说明