andorid 修改字体一文搞定
本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点
替换字体也是一个比较常见的需求,一般分几种情况。实现起来也不麻烦,这里简单记录下
全局替换字体
步骤1
assets目录下拷贝字体文件
步骤2
application中替换默认字体
在Application的onCreate方法中增加替换方法
/**
* 设置自定义字体
*
* @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文件中注册
新增主题
<style name="YourTheme" parent="AppTheme.Base">
<item name="android:typeface" >serif</item>
</style>
在AndroidManifest.xml文件中设置主题
<application xmlns:tools="http://schemas.android.com/tools"
...
android:theme="@style/YourTheme"
tools:replace="android:theme">
...
</application>
替换某些布局中的字体,也就是局部替换
步骤1:在res目录下新建font目录,拷贝字体文件
步骤2: 代码中替换
TextView textView = (TextView) findViewById(R.id.textView_font);
Typeface typeface = ResourcesCompat.getFont(this, R.font.myfont);
textView.setTypeface(typeface);
欢迎关注我的微信公众号,和我一起每天进步一点点!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
-
上一篇
Android字符串反转、左移和右移
本文首发于公众号“AntDream”,欢迎微信搜索“AntDream”或扫描文章底部二维码关注,和我一起每天进步一点点 反转 反转最简单的就是用StringBuilder和StringBuffer的reverse方法 private String reverseString(String original) { StringBuilder builder = new StringBuilder(); builder.append(original); return builder.reverse().toString(); } 左移和右移都有很多种方式来实现,这里简单介绍下三次反转法来实现左移右移 右移 /** * 右移index位 * @param from * @param index * @return */ private String rightMoveIndex(String from, int index) { from = reverseString(from); String first = from.substring(0,index); String second...
-
下一篇
山不过来我过去-iOS 10联网问题分析及解决之道
从已知的用户反馈来看,目前iOS 10所有的版本都被偶现的首次安装App无法联网的问题所困扰。苹果迟迟未修复这个bug。详细的原因和解决办法可以参考:具透 | 你可能不知道,iOS 10 有一个中国「特供」的联网权限功能。 不少用户因为这个原因给我们一颗星,严重影响我们App的声誉。所以我针对这个问题做一些分析,看看能否找到一些好的解决办法。 目前iOS系统所有权限如下表所示。并没有网络相关的权限。参看:http://stackoverflow.com/questions/29894749/complete-list-of-ios-app-permissions。 Contacts Microphone Calendars Camera Reminders HomeKit Photos HealthKit Motion activity
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker安装Oracle12C,快速搭建Oracle学习环境
- CentOS7,CentOS8安装Elasticsearch6.8.6
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS8编译安装MySQL8.0.19
- MySQL数据库在高并发下的优化方案
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- MySQL8.0.19开启GTID主从同步CentOS8
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- CentOS7,8上快速安装Gitea,搭建Git服务器