Android加载自定义字体出错,Android设置自定义字体的解决方案
找了很多解决方案,但是都会报错,只好边借鉴着前辈们的思路,边自己尝试改代码了QWQ
前面准备:要先把使用的字体文件放入到工具中
新建一个名叫assets的文件夹,然后把字体文件复制到里面,如图
成功放置示意图
这里我需要分别在两种情况下使用两种字体,所以示意图上有两种字体。
1.如果只是单独设置一两个,使用这个代码就可以了。
例子使用:HYXiaoBoZheZhiTiJ字体
TextView tv = (TextView) findViewById(R.id.textTittle);
//从assert中获取有资源,获得app的assert
// 采用getAserts(),通过给出在assert/下面的相对路径
// 在实际使用中,字体库可能存在于SD卡上
// 可以采用createFromFile()来替代createFromAsset
Typeface face = Typeface.createFromAsset(getAssets(),"fonts/HYXiaoBoZheZhiTiJ.ttf");
tv.setTypeface(face);
2.如果需要大量使用自己的自定义字体,类可以完成自定义字体,之后再哪里需要使用自定义字体,就把路径替换原有的TextView就完成了。
例子使用:汉仪黑仔体字体
新建一个类名叫MyTextView继承TextView,重写2个参数的构造方法,源码如下
public classMyTextViewextendsandroid.support.v7.widget.AppCompatTextView {
//Simple constructor to use when creating a view from code
publicMyTextView(Context context) {
super(context);
}
/**
* 初始化字体
*
*@paramcontext
*/
//Constructor that is called when inflating a view from XML
publicMyTextView(Context context, AttributeSet attrs) {
super(context, attrs);
init(context);
}
//Perform inflation from XML and apply a class-specific base style
publicMyTextView(Context context, AttributeSet attrs,intdefStyle) {
super(context, attrs, defStyle);
}
public voidinit(Context context) {
/**
* 初始化字体
*
*/
Typeface tf = Typeface.createFromAsset(getContext().getAssets(),"汉仪黑仔体.ttf");
setTypeface(tf ,1);
}
然后我们复制MyTextView的路径到activity_main中,替换原有的TextView,
我这里的路径是com.example.administrator.eats.MyTextView
修改activity_main中的代码:
替换路径后图
好了,到这里,我们就完成了自定义字体,现在我们运行程序看看效果!(其实还在设计啦,只是对于这个自定义字体的事情已经结束了,故放上草图,见谅见谅!!!)
运行示意图
写程序过程遇到的问题:
一开始我运行遇到的问题是Binary XML file line # : Error inflating class
反正核实后,得到知识点是:
自定义View时三个构造函数都要实现(我只构造了一个)
View(Context context) //Simple constructor to use when creating a view from code
View(Context context, AttributeSet attrs) //Constructor that is called when inflating a view from XML
View(Context context, AttributeSet attrs, int defStyle) //Perform inflation from XML and apply a class-specific base style
第一个是用来在代码中创建View使用,第二个和第三个是从xml中创建View时使用
不过后来很奇怪=-=当我运行成功我的代码,达到我想要的效果的时候,我发现我删掉那2个我自定义的构造函数时,还是能运行,我也搞不到啥子贵了_(:3J∠)_不管了,继续做自己要的界面去了。以上几句都是本Android萌新的逼逼叨,如果有大佬看见了可以给我解释一下就谢谢了!粗略感觉可能是我之前把代码改的面目全非的缘故。
参考:
http://blog.csdn.net/javaandroid730/article/details/53122953
http://www.it1352.com/76703.html
http://blog.csdn.net/samuel__liu/article/details/53761683
http://blog.csdn.net/xiaoxuantengkong/article/details/40864065
Android加载自定义字体出错,Android设置自定义字体的解决方案相关推荐
- android 加载ttf流程分析,Android自定义字体 TextView 从SD卡加载TTF字体
Android自定义字体非常简单,能够从assets和SD卡两处加载标准的ttf字体.要实现自定义字体,只需借助工具类Typeface即可.文末有工程源码. 如果发生了Caused by: java. ...
- android加载大量图片内存优化,Android图片加载内存优化
利用BitmapFactory.Options实现图片内存优化 通过设置options.inPreferredConfig控制内存占用 首先准备了一张1280x800的blue_bg.png图片,我们 ...
- android 加载图片黑屏,Android 中启动页黑屏及白屏的解决方式
启动页黑屏或白屏的原因是,当Activity启动的时候不能马上加载layout. 而黑屏或者白屏是你的theme主题的默认样式,当layout没加载出来就显示黑屏或者白屏. 1.windowBackg ...
- android 加载更多,如何在android中实现加载更多的recyclerview
我想在Recyclerview中实现更多的加载.这是代码. 代码来自 github. https://gist.github.com/ssinss/e06f12ef66c51252563e MainA ...
- android加载so文件失败,Android无法加载'.so.1'文件
我想你还没有通过JNI加载原生库到Java的概念. 首先在java中定义本地方法并在本机中执行相应的实现并编译它(您必须按照命名约定注册本地方法1)2)在jni_onload中注册本地方法...我认为 ...
- android 加载更多动画效果,Android实践之带加载效果的下拉刷新上拉加载更多
前言 之前写的一个LoadingBar,这次把LoadingBar加到下拉刷新的头部.从头写一个下拉刷新,附赠上拉加载更多.下面话不多说了,来一起看看详细的介绍吧. 效果图: 实现过程 首先是自定义属 ...
- android 加载gif 动画,GifView——Android显示GIF动画
作者:ant.cy.liao 主页:http://code.google.com/p/gifview/ 下载:http://code.google.com/p/gifview/downloads/li ...
- android加载刷新进度条,android – 在Activity加载时显示进度条
我有一个ListActivity,它基于列表选择启动另一个Activity.第二个Activity需要从互联网上加载一些相当数据的数据,因此在用户点击一个项目和Activity显示之间有一个明显的延迟 ...
- android 加载大长图,android加载长图片的方法
1.很多应用都有加载一张长图片,用户可以上下拉动图片. 自己没有好的想法,那只好百度咯.结果都说用webview来实现,好吧那就只好先试一下了. 2.自己写了简单的html,然后webview加载.图 ...
- android 加载图片 白屏,android启动页白屏和图片自适应问题
android启动页白屏和图片自适应问题,自适应官方给的说法也只是做多套图去适配不同的分辨率,本文通过几个设置几行代码即可解决启动页短暂白屏和自适应问题. 网上的说法是通过启动页代码裁切图片或者在Im ...
最新文章
- ZOJ 3735 dp
- 监控服务器项目报备,智慧环保监控预警平台运维项目
- POJ 1064 -- Cable master(二分)
- redis的增加元素操作
- CSS: hover选择器的使用
- Hyperreal number
- 微信小程序 --- 动态获取input的value
- C++基础::便捷函数
- mysql awk_Awk实用手册(全)
- 加入域报错(找不到网络路径)
- 小知识·OTG工作原理
- EDKII Build Process:EDKII项目源码的配置、编译流程[3]
- linux里的.mht是什么文件,mht文件扩展名,mht文件怎么打开?
- VT是什么?怎么打开教程
- 利用TLF给文本加样式
- 计算机保研er历程分享(浙软、厦大、华师、东南网安、东北、西电、中南......)
- 控制台安装mysql步骤_mysql5.6安装步骤-win7系统
- 车载通信——CAN收发器选型(低功耗)
- 遇到《顺丰速运》app奔溃了,怎么回事呢?
- 机械革命z3pro笔记本U盘重装win10系统教学