在开发android应用时,我们经常会碰到一种需求就是将app中的所有文字都使用一种特定字体,而非Android系统默认字体Roboto。
大家试想,如果要修改字体最容易的方式便是使用setTypeface这个接口,传入你所需要的Typeface,就像下面的例子一样:
String fontName = "fonts/Hand_Of_Sean_Demo.ttf";
Typeface userFont = Typeface.createFromAsset(getAsset(), fontName);
TextView textView = (TextView) findViewById(R.id.myText);
textView.setTypeface(userFont);
但是这种使用默认android TextView,并对单个textView使用setTypeface会出现什么麻烦呢?假如你的应用中只有3个TextView对象,我也就多写一些setTypeface,如
textView1.setTypeface(userFont);
textView2.setTypeface(userFont);
textView3.setTypeface(userFont);
或许在一定程度上来说,多些几个setTypeface没有什么影响,但是一般的android 应用,都有几百个TextView 和 Button,难道每一个都要调用setTypeface方法吗?
故而要引入这篇博客的主题,自定义TextView 和 Button, 对于上面的问题最简单的实现方式就是实现自己的TextView和Button, 下面用XTextView和XButton分别表示它们。其实也就是加两个class,分别继承系统默认的组件。
class XTextView extends TextView
class XButton extends Button
之后在这两个类的构造函数中调用setTypeface(userFont),就可以实现将所有文字和按钮的字体都修改为特殊字体。具体如下所示:
之后在Layout中使用XTextView组件就已经是特定的字体了,这样就可以非常简便的实现改变字体的功能,同时如果以后要修改字体也非常方便。
另外,这是小弟第一次写技术博客,如果有什么写得不好的地方,希望大家能够不吝赐教!
本文介绍了如何在Android应用中统一设置所有文字和按钮的字体,避免逐个组件调用setTypeface方法。通过自定义XTextView和XButton,继承原生组件并在构造函数中设置字体,实现了批量替换字体的效果,简化了大量TextView和Button的字体修改工作。
6022

被折叠的 条评论
为什么被折叠?



