Android中TextView到Application Class的自定义字体

时间:2016-01-13 15:06:58

标签: android

如何维护整个应用的自定义字体。而不是从Android中的资产加载文件。例如下面的

TextView tv =(TextView)findViewById(R.id.textview1);
Typeface type =Typeface.createfromAssets(this,"custom.ttf");
tv.setTypeface(type);

2 个答案:

答案 0 :(得分:1)

创建一个类似'CustomTextView'的新类 它扩展了TextView。

默认情况下,将字体设置为此CustomTextView并使用CustomTextView 在你的应用程序的其余部分。

答案 1 :(得分:1)

您可以使用书法(https://github.com/chrisjenx/Calligraphy

为应用程序定义自定义字体

在build.gradle中添加依赖项:

dependencies {
    ...
    compile 'uk.co.chrisjenx:calligraphy:2.1.0'
    ...
}

添加字体

将自定义字体添加到assets/fonts/文件夹

安装,设置整个应用的默认字体

使用CalligraphyConfig在#onCreate()方法的Application类中定义默认字体。

@Override
public void onCreate() {
    super.onCreate();
    CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
                            .setDefaultFontPath("fonts/Roboto-RobotoRegular.ttf")
                            .setFontAttrId(R.attr.fontPath)
                            .build()
            );
    //....
}

注意:您不需要定义CalligraphyConfig,但库不会应用默认字体并使用R.id.fontPath的默认属性。

在每个活动中:

在你想要新字体的应用的每个Activity中执行此操作:

@Override
protected void attachBaseContext(Context newBase) {
    super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase));
}

你很高兴去!