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

 

posted @   mingruqi  阅读(2783)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
点击右上角即可分享
微信分享提示