做项目的时候,需要使用到手写字体来让内容更加的美观。可是程序中默认使用的是系统的默认字体,怎么将TextView(或EditText)的字体设置成自己想要的字体呢?步骤如下:

  1、下载字体文件(.ttf格式),比如Jinglei.ttf(方正静蕾的字体文件),然后将其复制到项目工程的assets/fonts目录下。

  2、设置TextView的字体:

 TextView tv = (TextView)findViewById(R.id.my_textview);
Typeface typeface = Typeface.createFromAsset(mContext.getAssets(), "fonts/Jinglei.ttf"); // mContext为上下文
tv.setTypeface(typeface );

  3、为了使用起来方便,还可以将设置字体的操作封装成一个工具类:

 /**
* 字体相关操作工具类
*
*/
public class TypefaceUtil {
// 上下文
private Context mContext;
private Typeface mTypeface; /**
* 如果ttfPath为null那么mTypeface就为系统默认值
*
* @param context
* @param ttfPath
*/ public TypefaceUtil(Context context, String ttfPath) {
mContext = context;
mTypeface = getTypefaceFromTTF(ttfPath);
} /**
* 从ttf文件创建Typeface对象
*
* @ttfPath "fonts/XXX.ttf"
*/
public Typeface getTypefaceFromTTF(String ttfPath) { if (ttfPath == null) {
return Typeface.DEFAULT;
} else {
return Typeface.createFromAsset(mContext.getAssets(), ttfPath);
}
} /**
* 设置TextView的字体
*
* @tv TextView对象
* @ttfPath ttf文件路径
* @isBold 是否加粗字体
*/
public void setTypeface(TextView tv, boolean isBold) {
tv.setTypeface(mTypeface);
setBold(tv, isBold);
} /**
* 设置字体加粗
*/
public void setBold(TextView tv, boolean isBold) {
TextPaint tp = tv.getPaint();
tp.setFakeBoldText(isBold);
} /**
* 设置TextView的字体为系统默认字体
*
*/
public void setDefaultTypeFace(TextView tv, boolean isBold) {
tv.setTypeface(Typeface.DEFAULT);
setBold(tv, isBold);
} /**
* 设置当前工具对象的字体
*
*/
public void setmTypeface(String ttfPath) {
mTypeface = getTypefaceFromTTF(ttfPath);
} }

  4、使用的时候只需这样调用:

 TypefaceUtil tfUtil = new TypefaceUtil(mContext,"fonts/Jinglei.ttf");
tfUtil.setTypeface(tv,false);

随机推荐

  1. VS中去除SrouceControl的信息

    如果在不连接TFS的情况下,编辑一个已经source control的solution,总是会有烦人的提示信息.如果你确定不再需要source control,可以这么干. Here is how t ...

  2. vCenter初始化数据中心和集群

    接着上一次的文档"7.vCeenter部署流程2",vcenter软件已经安装在2008上了,同时win2008上的和vmware相关的服务都已经启动,这里一定要检查以下: 打开服 ...

  3. ThinkPHP与EasyUI整合之三(searchbox):在datagrid中查询指定记录

    在datagrid中toolbar添加searchbox查询框,根据列范围查询数据,先看效果图: 1. searchbox采用easyui的Demo例子,再加以js扩展,根据datagrid中的列数据 ...

  4. web.xml文件:

    在web.xml配置文件是一个的J2EE配置文件,决定如何处理HTTP请求servlet容器的元素.它不是严格意义上的Struts2的配置文件,但它是一个文件,需要配置Struts2的工作. 正如前面 ...

  5. To Be a Dog Man

    作为一个多年的篮球爱好者,多年保持者对于足球的偏见. 也许不了解也是偏见開始的地方. 直到我最终看到了那个男人---梅西 梅西:一个犬人,一个病人 视频作者是阿根廷专栏作家Hernam Casciar ...

  6. Unity官方发布热更新方案性能对照

    孙广东  2016.3.11 Unity应用的iOS热更新 作者:丁治宇 Unity TechnologiesChina Agenda •  什么是热更新 •  为何要热更新 •  怎样在iOS 上对 ...

  7. ios -逆向-代码混淆

    该方法只能针对有.m.h的类进行混淆,静态库等只有.h文件的没法进行混淆 代码混淆,刚刚看到是不是有点懵逼,反正我是最近才接触到这么个东西,因为之前对于代码和APP,只需要实现功能就好了,根本没有考虑 ...

  8. 使用神器MobaXterm连接远程mysql和redis

    https://mobaxterm.mobatek.net/download-home-edition.html mysql redis 连接测试 mysql 127.0.0.1 3307 密码使用线 ...

  9. docker学习笔记(1)概述、原理学习、常用命令

    一.Docker概述 Docker是基于Go语言实现的云开源项目,诞生于2013年初,目前主流的Linux操作系统已支持Docker,如Redhat RHEL6.5/CentOS6.5.Ubuntu ...

  10. c#文件流汇总

    操作文件比较常见,项目中经常出现这样的需求:按每个月自动创建文件,并且向文件里面插入一些数据,那么我们将要分析,文件是否存在的情况:如果存在则直接打开文件流向文件中插入数据,如果不存在,则创建文件再插 ...