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