如何改变android app的默认字体?

时间:2016-01-03 02:43:43

标签: android fonts typeface android-typeface

我想用非英语制作应用程序。因此,我需要使用非英语语言的textviews,字符串和toast。为每个文本设置字体很麻烦。有没有办法设置默认字体?当我不得不用英语引用某些内容(比如电子邮件ID)时,我可以使用textview.settypeface(xyz)方法。

2 个答案:

答案 0 :(得分:9)

在android中有一个自定义字体的图书库:custom fonts

以下是如何使用它的示例。

在gradle中你需要把这一行:

public class App extends Application { 
@Override public void onCreate() {
super.onCreate();

CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
                .setDefaultFontPath("your font path")
                .setFontAttrId(R.attr.fontPath)
                .build()
);
}
}

然后创建一个扩展应用程序的类并编写此代码:

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

在activity类中将此方法放在onCreate:

之前
<application
android:name=".App"

在您的清单文件中写如下:

datetime

它会将整个活动更改为您的字体!我是一个简单的解决方案,干净!

答案 1 :(得分:1)

您可以通过3种方式实现这一目标。一种方法是创建一个自定义TextView并在任何地方引用它,即:

t.integer  "company_id"
t.string   "job_title"
t.string   "job_location"
t.decimal  "salary",              precision: 8, scale: 2
t.text     "description"
t.string   "required_education"
t.string   "required_major"
t.string   "required_experience"
t.datetime "created_at",                                  null: false
t.datetime "updated_at",                                  null: false

和View.xml内部

    public class TypefacedTextView extends TextView {

    public TypefacedTextView(Context context, AttributeSet attrs) {
        super(context, attrs);

        Typeface typeface = Typeface.createFromAsset(context.getAssets(), fontName);
        setTypeface(typeface);
    }
}

另一种方法是在github中使用强大的<packagename.TypefacedTextView android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Hello"/> 库。 see this

最后,您可以使用自己的字体see this

覆盖默认值