gpt4 book ai didi

java - 无法更改 Android 应用程序中的默认字体

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:53:06 26 4
gpt4 key购买 nike

我正在尝试更改我的应用程序中的默认字体。但它不起作用。这些是我采取的步骤:

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) 在扩展 Application 的类中:

public void onCreate() {

super.onCreate();
TypefaceUtil.overrideFont(getApplicationContext(), "MONOSPACE", "fonts/varelaround_regular.ttf");
}

3) 在styles.xml

 <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="android:typeface">monospace</item>
</style>

还是不行。我错过了什么吗?

最佳答案

我曾经遇到过这个问题。我不太确定它为什么有效,但您可以尝试以下操作:而不是“等宽”,尝试以下每一个:默认、无衬线、衬线。它可能不适用于所有 TextView ,例如 ListView 或 recyclerView 中的 TextView (很奇怪,对吧?)。但在那些情况下,我从适配器以编程方式设置字体。抱歉无法解释原因。

关于java - 无法更改 Android 应用程序中的默认字体,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35225337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com