做项目的时候,需要使用到手写字体来让内容更加的美观。可是程序中默认使用的是系统的默认字体,怎么将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. CentOS卸载系统自带的OpenJDK

    查看目前系统的jdk: rpm -qa | grep jdk 得到的结果: $ rpm -qa | grep jdk java-1.6.0-openjdk-1.6.0.0-1.45.1.11.1.el ...

  2. 读写文件,用代码在讲html文件转为jsp文件

    package my.testguava; import java.io.BufferedWriter; import java.io.File; import java.io.FileInputSt ...

  3. Servlet线程安全2

    Servlet的多线程机制 Servlet体系结构是建立在Java多线程机制之上的,它的生命周期是由Web容器负责的.当客户端第一次请求某个Servlet时,Servlet容器将会根据web.xml配 ...

  4. Mysql事务-隔离级别

    MYSQL事务-隔离级别 事务是什么? 事务简言之就是一组SQL执行要么全部成功,要么全部失败.MYSQL的事务在存储引擎层实现. 事务都有ACID特性: 原子性(Atomicity):一个事务必须被 ...

  5. asp.net 页面延时五秒,跳转到另外的页面

    asp.net 页面延时五秒,跳转到另外的页面的实现代码. --前台 <%@ Page Language="C#" AutoEventWireup="true&qu ...

  6. Laravel使用ORM操作数据

    数据表 CREATE TABLE IF NOT EXISTS students( `id` INT AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NO ...

  7. SAE+wordpress邮箱问题,WP MAIL STMP插件配置但无效解决的方法

    我在SAE上面部署的WordPress是3.9版本号的,而非SAE应用商店里WordPress4sae是3.4的,虽然3.9版本号的确有非常多改进但在部署在SAE上面时须要做非常多改动,并且有些插件也 ...

  8. c++ 继承,组合

    .什么是继承 A继承B,说明A是B的一种,并且B的所有行为对A都有意义 eg:A=WOMAN B=HUMAN A=鸵鸟 B=鸟 (不行),因为鸟会飞,但是鸵鸟不会. .什么是组合 若在逻辑上A是B的“ ...

  9. hoj 2715 (费用流 拆点)

    http://acm.hit.edu.cn/hoj/problem/view?id=2715 将每个格子 i 拆成两个点 i’, i’’并加边(i’, i’’, 1, -Vi), (i’, i’’, ...

  10. Disable Client Certificate Revocation (CRL) Check on IIS

    Disable Client Certificate Revocation (CRL) Check on IIS: REGISTRY  : HKLM\SYSTEM\CurrentControlSet\ ...