Android API≤21时FontAwesome 5字体家族无法正常工作怎么办?
配置Android下的FontAwesome 5 Pro字体家族
看起来你已经在为Android项目配置FontAwesome 5的字体家族了,我帮你把完整的配置代码整理好,同时补充一些实用细节:
首先是完整的字体家族XML配置(我补全了你截断的部分,涵盖常见的FontAwesome变体):
<?xml version="1.0" encoding="utf-8"?> <font-family xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto"> <!-- Light 样式,字重300 --> <font app:font="@font/font_awesome_5_pro_light_300" app:fontStyle="normal" app:fontWeight="300" /> <!-- Regular 样式,字重400 --> <font app:font="@font/font_awesome_5_pro_regular_400" app:fontStyle="normal" app:fontWeight="400" /> <!-- Solid 样式,字重900 --> <font app:font="@font/font_awesome_5_pro_solid_900" app:fontStyle="normal" app:fontWeight="900" /> <!-- Brands 品牌图标,字重400 --> <font app:font="@font/font_awesome_5_brands_regular_400" app:fontStyle="normal" app:fontWeight="400" /> </font-family>
关键说明:
- 把这个XML文件存放在
res/font/目录下,建议命名为font_awesome_family.xml,方便后续引用 - 每个
<font>标签对应一个FontAwesome的字体变体:fontWeight必须和字体本身的字重匹配(比如Solid是900,Regular是400),这样系统能自动根据文本的textStyle或fontWeight属性匹配对应的字体
- 确保所有引用的TTF字体文件都已经放在
res/font/目录下,文件名要和XML中的@font/xxx完全一致,避免出现找不到字体的问题
使用示例:
在布局文件里直接引用这个字体家族来显示图标:
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="\uf007" <!-- 用户图标的Unicode码,可从FontAwesome官方资源查询 --> android:fontFamily="@font/font_awesome_family" android:textSize="24sp" android:textColor="@color/black" />
如果需要在代码中动态设置字体:
import android.support.v4.content.res.ResourcesCompat // 在Activity或Fragment中 val iconTextView = findViewById<TextView>(R.id.icon_text) iconTextView.typeface = ResourcesCompat.getFont(this, R.font.font_awesome_family) iconTextView.text = "\uf007"
内容的提问来源于stack exchange,提问作者earlshlep
相关产品推荐
相关产品推荐

