Android中如何全局替换App的字体

替换字体也是一个比较常见的需求,一般分几种情况。实现起来也不麻烦,这里简单记录下

全局替换字体

步骤1

assets目录下拷贝字体文件

步骤2

application中替换默认字体

在Application的onCreate方法中增加替换方法

 

java

复制代码

/** * 设置自定义字体 * * @param context * @param staticTypefaceFieldName 需要替换的系统字体样式 * @param fontAssetName 替换后的字体样式 */ public static void setDefaultFont(Context context, String staticTypefaceFieldName, String fontAssetName) { // 根据路径得到Typeface Typeface regular = Typeface.createFromAsset(context.getAssets(), fontAssetName); // 设置全局字体样式 replaceFont(staticTypefaceFieldName, regular); } private static void replaceFont(String staticTypefaceFieldName, final Typeface newTypeface) { try { final Field staticField = Typeface.class.getDeclaredField(staticTypefaceFieldName); staticField.setAccessible(true); //替换系统字体样式 staticField.set(null, newTypeface); } catch (NoSuchFieldException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } }

步骤3:新增主题Theme,并在AndroidManifest文件中注册

新增主题

 

java

复制代码

<style name="YourTheme" parent="AppTheme.Base"> <item name="android:typeface" >serif</item> </style>

在AndroidManifest.xml文件中设置主题

 

java

复制代码

<application xmlns:tools="http://schemas.android.com/tools" ... android:theme="@style/YourTheme" tools:replace="android:theme"> ... </application>

替换某些布局中的字体,也就是局部替换

步骤1:在res目录下新建font目录,拷贝字体文件

步骤2: 代码中替换

 整理了这份面试笔记包括了:Java面试、Spring、JVM、MyBatis、Redis、MySQL、并发编程、微服务、Linux、Springboot、SpringCloud、MQ、Kafka 面试专题

需要全套面试笔记【点击此处】即可免费获取

java

复制代码

TextView textView = (TextView) findViewById(R.id.textView_font); Typeface typeface = ResourcesCompat.getFont(this, R.font.myfont); textView.setTypeface(typeface);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值