Android开发之字体设置
默认字体
Android SDK自带了四种字体:"normal"“monospace",“sans”, “serif”,如下:

字体
看这四兄弟长的还是蛮像,我是看不出多大差别。。。
设置方式
1.通过XML文件设置
<TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="monospace" android:textSize="20dp" android:textColor="#000000" android:typeface="monospace" android:layout_margin="5dp"/>
2.Java代码中设置
TextView txtNormal = (TextView) findViewById(R.id.txt_normal);
txtNormal.setTypeface(Typeface.MONOSPACE);
设置第三方字体
Res中使用
右键选择项目的app / res文件夹,然后选择New > Android resource directory。

image.png
Resource type中选择font,File name名为font。

image.png
将字体文件拷贝到font中

image.png
java代码中使用
TextView txtNormal = (TextView) findViewById(R.id.txt_helvetica); Typeface typeface = ResourcesCompat.getFont(this, R.font.helvetica); txtNormal.setTypeface(typeface);
Assets中使用
新建Assets及fonts目录,并将字体文件拷贝到fonts目录下

拷贝字体
在java代码中使用
TextView txtNormal = (TextView) findViewById(R.id.txt_helvetica); Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/helvetica.ttf"); txtNormal.setTypeface(typeface);
第三方框架全局字体设置
这里推荐一个第三方字体设置库Calligraphy,详细可以点击连接
添加依赖
compile 'uk.co.chrisjenx:calligraphy:2.3.0'
新建Application
public class BaseApplication extends Application { @Override public void onCreate() { super.onCreate(); CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() .setDefaultFontPath("fonts/Helvetica.ttf") .setFontAttrId(R.attr.fontPath) .build() ); } }
在Activity中重写attachBaseContext方法
@Override protected void attachBaseContext(Context newBase) { super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); }
在xml中使用
<TextView android:id="@+id/txt_helvetica" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Lorem ipsum" android:textSize="20dp" android:textColor="#000000" android:layout_margin="5dp" fontPath="fonts/Helvetica.ttf" tools:ignore="MissingPrefix"/>
如果fontPath="fonts/Helvetica.ttf"报错,在View上添加 tools:ignore="MissingPrefix”即可。
其他具体功能,详见Calligraphy
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库