XML字体配置

2023-11-09

一、前言

在以往的开发中,开发者都是将字体文件放在assets目录下,在程序运行时加载并设置到TextView中,自从Android 8.0(API level 26)开始,支持将字体文件放在res资源中,添加XML字体配置,可以在layout布局文件中直接使用。

PS: 说到这,肯定又有人在想Android 8.0(API level 26)才开始有,这个适配性差。放心,Google早已经考虑到这一点,提供了支持库(需要26及以上版本),可以在Android 4.1 (API level 16)及以上系统上使用这新颖的做法。

二、XML字体配置

需要在XML中引用字体文件,那么就需要将字体文件放到项目的res资源目录下,这些字体文件会被编译到R.java文件中,作为资源被引用。font是在Android 8.0开始的一种新的资源类型。

  • 将字体文件作为资源添加到项目中的步骤如下:
  1. res目录下新建font目录(如果是使用AndroidStudio,在res目录下右键,New > Android resource directory,然后选择类型为font);
  2. 将字体文件拷贝到res/font目录下(字体命名规则要符合Android资源文件命名规则,如果在AndroidStudio中,双击字体可以预览字体);
  3. 引用字体文件。

2.1 创建字体系列(font family)

字体系列(font family)是拥有自己样式和权重的字体集合。在Android中,你可以通过XML资源创建一个新的字体系列,并当做单独的资源来访问。相比单独引用字体资源并设置每个字体的样式和权重的做法,使用字体系列,系统能够根据文本的样式更准确地选择你想要使用的字体。

  • 创建字体系列的步骤如下:
  1. 在资源目录res/font下新建XML文件;
  2. 在新建的XML文件中,添加<font-family>根节点,并在根节点内部添加<font>节点,引用字体文件并配置属性。
<?xml version="1.0" encoding="utf-8"?>
<font-family>
    <font
        android:fontStyle="normal"
        android:fontWeight="400"
        android:font="@font/cooper_black_std" />

    <font
        android:fontStyle="italic"
        android:fontWeight="400"
        android:font="@font/cooper_black_std_italic" />
</font-family>

2.2 在XML中使用字体资源

在XML中TextView或者它的样式声明中,可以通过fontFamily属性引用字体资源,包括单独的字体和字体系列。

如果使用字体系列,TextView会根据实际情况需要,自动切换字体系列中声明的字体。

  • TextView中使用字体资源
<TextView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:fontFamily="@font/copper_black_std_family"/>
  • 在样式声明中使用字体资源
    values/styles.xml中添加样式声明,并添加android:fontFamily属性
style name="copperBlackStdFontStyle" parent="@android:style/TextAppearance.Small">
    <item name="android:fontFamily">@font/copper_black_std_family</item>
</style>

2.3 在编码中使用字体资源

在代码中,通过调用Resources对象的getFont(int)方法并传入字体资源唯一id进行获取,这个方法返回Typeface类型对象,通过调用TextViewsetTypeface(Typeface)方法设置字体,当然,你也可以使用setTypeface(Typeface, int)方法设置特定样式的字体。

说明:如果使用的是字体系列,TextView会自动选择样式。

val typeface = resources.getFont(this, R.font.copper_black_std_family)
tvMsg.typeface = typeface

2.4 使用支持库实现

  • 支持库实现XML字体配位置
    使用支持库实现XML字体,在XML字体配置上,跟上面提到的差不多,在创建字体系列时,需要引入命名空间才能使用。
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:app="http://schemas.android.com/apk/res-auto">
    <font
        app:fontStyle="normal"
        app:fontWeight="400"
        app:font="@font/cooper_black_std" />

    <font
        app:fontStyle="italic"
        app:fontWeight="400"
        app:font="@font/cooper_black_std_italic" />
</font-family>
  • 在代码中引用字体资源
    在低于Android 8.0(API level 26)中,Resources中没有getFont(int)方法,那么需要通过支持库提供的API获取字体资源,那就是ResourcesCompat.getFont(int),除此之外,其他的都一致。
val typeface = ResourcesCompat.getFont(this, R.font.copper_black_std_family)
tvMsg.typeface = typeface
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

XML字体配置 的相关文章

  • XML字体配置

    文章目录 一 前言 二 XML字体配置 2 1 创建字体系列 font family 2 2 在XML中使用字体资源 2 3 在编码中使用字体资源 2 4 使用支持库实现 一 前言 在以往的开发中 开发者都是将字体文件放在assets目录下
  • APP开发如何批量生成不同尺寸的图标?

    在我们开发APP的时候 我们使用到大量的不同尺寸的APPLogo的图片 如下图 通常 我们的做法是和设计师沟通 让他们切出这儿所以的图片 然后我们一个一个图片放在对应的位置 这样处理的话 我们比较容易出错 比如说 图片的格式 苹果对图片的格
  • 当面试官说 “你还有什么问题想问的” ,你该如何回答?

    程序员面试时经常会听到面试官说一些套话 比如 今天的面试就到这里了 回去等通知吧 你还有什么问题想问我的吗 如果这道题不会做 那么我们也可以换一道 今天我们要说的是大多数面试官都会说的一句话 你还有什么问题想问的 这是一个老生常谈的问题 之
  • android使用隐藏api的方法(使用被@hide的api)

    前言 一开始需要说明的是 Google之所以要将一些API隐藏 指加上 hide标记的public类 方法或常量 是有原因的 其中很大的原因就是Android系统本身还在不断的进化发展中 从1 0 1 1到现在即将问世的Android 2
  • 史上最全Android渲染机制讲解(长文源码深度剖析)

    前言 渲染机制是Android操作系统很重要的一环 本系列通过介绍应用从启动到渲染的流程 揭秘Android渲染原理 问题 1 vsync如何协调应用和SurfaceFlinger配合来完成UI渲染 显示 App接收vsync后要做哪些工作
  • 自动化测试-Appium-Desired Capabilities参数详解

    分类 定义与说明 General Capabilities 通用功能 Update settings Android Only UIAutomator 1 UIAutomator2 Only Espresso Only iOS Only i
  • Windows下安装Android Studio

    一 下载Android Studio 官网地址 http www android studio org 个人也推荐使用官网推荐的 可以省去一定的步骤跟麻烦 二 安装Android Studio 这里选择下路径 当然也可以不用进行修改 因为我
  • 这是一份面向3年以上Android开发者的中高级面试宝典,拔剑金九银十,大厂直通车

    前言 这是 拔剑金九银十 的第二篇文章 本文主要针对3年以上的Android开发者进阶面试中高级开发工程师而整理 三年以下小伙伴请移步 这是一份面向0 3年Android开发者的面试宝典 2020一线互联网大厂面试真题系统收录 希望可以对你
  • 混淆代码总结

    混淆代码网址很棒的网址 1 Android项目实战 二十五 Android studio 混淆 打包 验证是否成功 2 Android Studio 十一 代码混淆及打包apk 3 Android代码混淆之混淆规则 4 Error warn
  • 【精华】安卓开发学习路线规划

    近一段时间经常被朋友问到如何从零开始学习安卓 成为一名安卓开发工程师 不得不感叹 现在各行各业都有不少人在涌向IT 互联网行业 希望从事程序开发工作 竞争越来越激烈了 借此机会 我梳理了一下自己所学所知的安卓知识 制定了这份安卓开发学习路线
  • Android 宽高相等的adapter item内容

    使用一张网上的图 很多时候 我们需要用使用这样的排列 宽高固定 然后是中间留有一定的边距 毫无疑问 这里我们需要用到gridadapter GridView的item是正方形 而android需要适配不同尺寸的手机 所以不能写死item的高
  • 校园社区app

    此项目是面向在校大学生开发的一个集预约购物 组织活动 实事热帖于一体的社区app 前后台交互数据采用的是json数据格式 网络请求采用的是volley 后台采用mysql数据库 如果有写的不好的地方还望大家指正 主要功能为 预约购物 组织活
  • Android内存如何优化?阿里技术员工整理亲授,建议收藏

    作者 山鱿鱼说 链接 https juejin cn post 7106289745499521054 基础知识 内存概念 VSS Virtual Set Size 虚拟耗用内存 包含共享库占用的内存 RSS Resident Set Si
  • 一、安卓笔记(1)—Android Studio下的的APP目录结构

    一 Android Studio工程目录 1 gradle文件夹包含的是gradle工具的各个版本 不需要手动去填写 自动生成的 Gradle是一个基于Apache Ant和Apache Maven概念的项目自动化构建开源工具 它使用一种基
  • Android用surface直接显示yuv数据(二)

    研究了一段时间Android的surface系统 一直执着地认为所有在surface或者屏幕上显示的画面 必须要转换成RGB才能显示 yuv数据也要通过颜色空间转换成RGB才能显示 可最近在研究stagefright视频显示时发现 根本找不
  • Android Studio3.5.2 设置代码提示和代码自动补全快捷键

    方法步骤如下 1 左上角点击File选项 找到Settings 2 点击Settings后 找到Editor 3 点击Editor后 找到General 点击General 找到Code Completion 从图中我们可以看到标红 选择F
  • 史上最全Android性能优化方案解析

    Android中的性能优分为以下几个方面 布局优化 网络优化 安装包优化 内存优化 卡顿优化 启动优化 一 布局优化 布局优化的本质就是减少View的层级 常见的布局优化方案如下 在LinearLayout和RelativeLayout都可
  • 【Android11系统开发】上层app通过AIDL监听framework数据

    一 适用场景 在Android系统开发中 需要监听按键 触摸 或者可见窗口大小变化等需求时 你会考虑什么方法来实现呢 通过广播的方式可以实现 但是效果可能并不好 AIDL可以实现跨进程通讯 可以解决以上需求 下面重点分析下如何具体实现 以实
  • Android的组件、布局学习

    介绍 公司组织架构调整 项目组需要承接其他项目组的android项目 负责维护和开发新需求 故学习下基础语法和项目开发 组件学习 Toolbar header布局部分 就是app最顶部的部分 他的显示与否 是与F androidProjec
  • 印象深刻的实战经历——Android 如何生成多渠道文件

    作者简介 小曾同学 com 一个致力于测试开发的博主 主要职责 测试开发 CI CD 如果文章知识点有错误的地方 还请大家指正 让我们一起学习 一起进步 座右铭 不想当开发的测试 不是一个好测试 如果感觉博主的文章还不错的话 还请点赞 收藏

随机推荐

  • OpenWrt设置开机自动启动/延迟启动

    最近在搞路由器自动登录 用到了OpenWrt的自动启动 因为我要运行的是一个Python程序 一条命令足够 就直接在 etc rc local里面改了 python etc Myprogram py 直接占用前台了 既需要让他后台运行 又不
  • python计算定积分

    求 0 1
  • 外部保存echars图片

    传递图表容器id function downloadImpByChart chartId var myChart echarts getInstanceByDom document getElementById chartId var ur
  • 浅谈当下火热的ChatGPT

    ChatGPT这个词语从今年初发布以来 一度成为一个火热的概念 包括CSDN也推出了C知道 不少大佬博友纷纷蹭热点 发布了无数关于ChatGPT的技术 使用 技能 展望未来的文档和博文 其实很多文章我都没有看过 只知道当下这个工具非常的火
  • 快速入门Spring Cloud Hystrix(服务降级、服务熔断、服务监控)

    文章目录 前言 一 服务雪崩 1 服务雪崩概述 2 造成服务雪崩的原因 3 如何防止雪崩 二 Spring Cloud Hystrix 1 什么是Spring Cloud Hystrix 豪猪哥 2 搭建测试环境 1 创建cloud pro
  • Java 23种设计模式通俗理解

    文章目录 工厂方法 建造者模式 抽象工厂 原型模式 单态模式 适配器模式 桥梁模式 合成模式 装饰模式 门面模式 享元模式 代理模式 责任链模式 命令模式 解释器模式 迭代模式 调停者模式 备忘录模式 观察者模式 状态模式 策略模式 模板方
  • 刀具半径补偿 c语言,数控铣床编程时刀具半径补偿指令及运用

    摘要 本文分析了刀具半径补偿概念及指令 如何灵活和合理地运用刀补值 正确编制加工程序以保证数控加工的有效性和准确性等问题 关键词 数控铣床编程 刀具半径补偿指令 一 刀具半径补偿的概念 在数控铣床上进行轮廓加工时 由于铣刀的刀位点通常是定在
  • mysql查询语句提示Unknown column ‘xxx’ in ‘where clause’

    今天写接口自动化测试 在运行结果中提示Unknown column xxx in where clause 的问题 经过大神的指导 顿时明白其中缘由 如果sql中定义的类型是int型的可以不用加引号 但是如果是字符串类型的 必须加引号 例如
  • C++&QT day1

    思维导图
  • CTF(Web方向练习题)(持续更新)

    1 Training WWW Robots 打开应用场景 如下 网址后面添加 robots txt 查看其中内容 robots协议也叫robots txt 统一小写 是一种存放于网站根目录下的ASCII编码的文本文件 内容如下 根据提示 访
  • numpy.random.choice坑

    numpy random choice 默认是有放回 其中有个 replace 的参数控制 默认是 True 如划分数据集用到 注意重复 Code import numpy as np a np arange 5 print a for i
  • Go-Gateway反向代理,性能比拼Nginx

    前言 在以前的一篇文章 基于Fasthttp实现的Gateway 性能媲美Nginx 中 介绍给大家一款使用Go语言开发的实现反向代理功能的开源项目boot4go gateway boot4go gateway项目以fasthttp作为ht
  • gcc入门及合并静态库

    1 gcc入门 1 gcc即是linux下c c 的编译器 gcc经常用的的选项有 c o c表示只编译 compile 源文件但不链接 会把 c或 cc的c源程序编译成目标文件 二进制文件 一般是 o文件 o用于指定输出 out 文件名
  • C++:内联函数

    1 概念 以inline修饰的函数叫做内联函数 编译时C 编译器会在调用内联函数的地方展开 没有函数调用建立栈帧的开销 内联函数提升程序运行的效率 加inline与未加inline的效果可以通过反汇编查看 由于我使用的是VS2022 我先介
  • VScode使用之搭建linux开发环境

    使用SSH链接linux VScode链接的方法参考如下文章 VScode使用之ssh链接虚拟机 安装C C 插件 安装CMake插件 使用CMake构建项目 新建工程文件夹 main c inc fun h src fun c 快捷键Ct
  • 创建表 DATE类型 DEFAULT默认值

    date类型直接用CURRENT TIMESTAMP或curdate 会报错 是因为在MySQL默认你输入的是一个常量 而不能是一个表达式 如果必须要使用表达式则应该将该表达式整个用小括号包括起来 curdate DDL语句显示如下 参考
  • 【满分】【华为OD机试真题2023B卷 JAVA&JS】乱序整数序列两数之和绝对值最小

    华为OD2023 B卷 机试题库全覆盖 刷题指南点这里 乱序整数序列两数之和绝对值最小 知识点排序数组 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 给定一个随机的整数 可能存在正整数和负整数 数组 nums 请你在该数组
  • Ubuntu 虚拟机无法连接网络、不显示网络图标、没有网络设置

    Ubuntu20 无法连接网络 不显示网络图标 没有网络设置 出现的问题 在VMWare中使用Ubuntu系统时 通常需要设置网络连接但是有时会出现问题 右上角的网络连接的小图标不见了 网络也没有连接 ifconfig也看不到网卡 解决办法
  • Vue2面试题100问

    Vue2面试题100问 Vue2面试题100问 1 简述一下你对Vue的理解 2 声明式和命令式编程概念的理解 3 Vue 有哪些基本特征 4 vue之防止页面加载时看到花括号解决方案有哪几种 5 Vue中v for与v if能否一起使用
  • XML字体配置

    文章目录 一 前言 二 XML字体配置 2 1 创建字体系列 font family 2 2 在XML中使用字体资源 2 3 在编码中使用字体资源 2 4 使用支持库实现 一 前言 在以往的开发中 开发者都是将字体文件放在assets目录下