我正在尝试更改我的应用程序中的默认字体.但它不起作用.这些是我采取的步骤:
1)创建类TypefaceUtil.java
import android.content.Context;
import android.graphics.Typeface;
import android.util.Log;
import java.lang.reflect.Field;
public class TypefaceUtil {
public static void overrideFont(Context context,String defaultFontNameToOverride,String customFontFileNameInAssets) {
try {
final Typeface customFontTypeface = Typeface.createFromAsset(context.getAssets(),customFontFileNameInAssets);
final Field defaultFontTypefaceField = Typeface.class.getDeclaredField(defaultFontNameToOverride);
defaultFontTypefaceField.setAccessible(true);
defaultFontTypefaceField.set(null,customFontTypeface);
} catch (Exception e) {
Log.e("CustomFontException","Can not set custom font " + customFontFileNameInAssets + " instead of " + defaultFontNameToOverride);
}
}
}
2)在扩展应用程序的类中:
public void onCreate() {
super.onCreate();
TypefaceUtil.overrideFont(getApplicationContext(),"MONOSPACE","fonts/varelaround_regular.ttf");
}
3)在styles.xml中
仍然没有用.我错过了什么吗?
最佳答案
我曾经遇到过这个问题.我不太清楚为什么会这样,但你可以尝试以下方法:
而不是“等宽”,尝试以下各项:
DEFAULT,SANS_SERIF,SERIF.它可能不适用于所有文本视图,例如ListView或recyclerView中的文本视图(很奇怪,对吧?).但在这些情况下,我以编程方式从适配器设置字体.
很抱歉无法解释原因.
原文链接:https://www.f2er.com/android/429936.html而不是“等宽”,尝试以下各项:
DEFAULT,SANS_SERIF,SERIF.它可能不适用于所有文本视图,例如ListView或recyclerView中的文本视图(很奇怪,对吧?).但在这些情况下,我以编程方式从适配器设置字体.
很抱歉无法解释原因.