可能重复:
Android - 使用自定义字体
在 Android 应用程序中自定义字体的最佳或有效方法是什么?我一直在尝试自定义我的 Textviews 和 Edittexts,但我的应用程序有点慢,因为我正在使用自定义字体并且占用大量内存,有时甚至崩溃。
可能重复:
Android - 使用自定义字体
在 Android 应用程序中自定义字体的最佳或有效方法是什么?我一直在尝试自定义我的 Textviews 和 Edittexts,但我的应用程序有点慢,因为我正在使用自定义字体并且占用大量内存,有时甚至崩溃。
我严重怀疑您的应用程序的缓慢是您使用自定义字体的结果。这可能是您应用它们的方式。通常,我会在我的 Activity 中执行以下操作:
//Get an instance to the root of your layout (outermost XML tag in your layout
//document)
ViewGroup root = (ViewGroup)findViewById(R.id.my_root_viewgroup);
//Get one reference to your Typeface (placed in your assets folder)
Typeface font = Typeface.createFromAsset(getAssets(), "My-Font.ttf");
//Call setTypeface with this root and font
setTypeface(root, font);
public void setTypeface(ViewGroup root, Typeface font) {
View v;
//Cycle through all children
for(int i = 0; i < root.getChildCount(); i++) {
v = root.getChildAt(i);
//If it's a TextView (or subclass, such as Button) set the font
if(v instanceof TextView) {
((TextView)v).setTypeface(font);
//If it's another ViewGroup, make a recursive call
} else if(v instanceof ViewGroup) {
setTypeface(v, font);
}
}
}
这样,您只保留一个对您的字体的引用,并且您不必对任何视图 ID 进行硬编码。
您也可以将其构建为 的自定义子类Activity
,然后让您的所有 Activity 扩展您的自定义 Activity 而不是仅仅扩展 Activity,然后您只需编写一次此代码。