Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无法重置或替换Android应用程序中的默认字体_Android_Android Typeface - Fatal编程技术网

无法重置或替换Android应用程序中的默认字体

无法重置或替换Android应用程序中的默认字体,android,android-typeface,Android,Android Typeface,我在我的应用程序上设置了默认字体,现在我认为它不适合UI,我想重置它。但我不知道如何重置它 以下是代码,对此问题的解决方案将不胜感激 (1) 我首先创建了一个FontOverride类,用新字体替换默认字体 public class FontsOverride { public static void setDefaultFont(Context context, String staticTypefaceFieldName, String fontAssetName) { final

我在我的应用程序上设置了默认字体,现在我认为它不适合UI,我想重置它。但我不知道如何重置它

以下是代码,对此问题的解决方案将不胜感激

(1) 我首先创建了一个FontOverride类,用新字体替换默认字体

public class FontsOverride {
public static void setDefaultFont(Context context, String staticTypefaceFieldName, String fontAssetName) {
    final Typeface regular = Typeface.createFromAsset(context.getAssets(), fontAssetName);
    replaceFont(staticTypefaceFieldName, regular);
}

protected static void replaceFont(String staticTypefaceFieldName, final Typeface newTypeface) {
    try {
        final Field staticField = Typeface.class.getDeclaredField(staticTypefaceFieldName);
        staticField.setAccessible(true);
        staticField.set(null, newTypeface);
    } catch(NoSuchFieldException e) {
        e.printStackTrace();
    } catch (IllegalAccessException e) {
        e.printStackTrace();
    }
}
}
(2) 我创建了另一个名为AppConfig的类,它控制应用程序的总体配置

    public class AppConfig extends android.app.Application {

    public static String URL_LOGIN = "http://marshall.hostzi.com/Gruppo/";
    public static String URL_REGISTER = "http://marshall.hostzi.com/Gruppo/";

    @Override
    public void onCreate() {
        super.onCreate();
        FontsOverride.setDefaultFont(this, "MONOSPACE", "fonts/Galderglynn.ttf");
    }
}
(3) 最后是style.xml文件。有一个项目名为monospace,因此monospace将被Ganderglynn.ttf以编程方式替换

<resources>

<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
    <item name="android:typeface">monospace</item>
</style>

单空间

我试着用另一个Galderglynn.ttf文件切换Galderglynn.ttf文件,但不起作用,字体仍然是Galderglynn字体

编辑以下是Androidmanifest.xml文件的一部分

<application
    android:name="com.marshall.gruppo.app.AppController"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

我想你需要在app/src/main/assets/fonts中添加另一种字体/ 像这样:(对不起,我现在不能发布图片)

接下来,在配置中更改fontPath

public class AppConfig extends android.app.Application {

    public static String URL_LOGIN = "http://marshall.hostzi.com/Gruppo/";
    public static String URL_REGISTER = "http://marshall.hostzi.com/Gruppo/";

    @Override
    public void onCreate() {
        super.onCreate();
        FontsOverride.setDefaultFont(this, "MONOSPACE", "fonts/HelveticaNeue.ttf");
    }
}

最后,我推荐一些很棒的库来更改默认字体,如书法:

我认为您需要在app/src/main/assets/fonts中添加另一种字体/ 像这样:(对不起,我现在不能发布图片)

接下来,在配置中更改fontPath

public class AppConfig extends android.app.Application {

    public static String URL_LOGIN = "http://marshall.hostzi.com/Gruppo/";
    public static String URL_REGISTER = "http://marshall.hostzi.com/Gruppo/";

    @Override
    public void onCreate() {
        super.onCreate();
        FontsOverride.setDefaultFont(this, "MONOSPACE", "fonts/HelveticaNeue.ttf");
    }
}

最后,我推荐一些很棒的libs来更改默认字体,如书法:

谢谢你的回答,但我已经尝试过了。。那不行。检查你的android清单,AppTheme是在使用还是在使用另一个呢?我刚刚编辑并上传了我的Androidmanifest.xml的部分。我使用的是style.xml中定义的样式。请尝试添加“fontsoferride.setDefaultFont(这是“MONOSPACE”、“fonts/HelveticaNeue.ttf”);”在com.marshall.gruppo.app.AppController而不是AppConfigHmm中创建onCreate非常奇怪。。我只是试了一下,但也没用。谢谢你的回答,但我已经试过了。。那不行。检查你的android清单,AppTheme是在使用还是在使用另一个呢?我刚刚编辑并上传了我的Androidmanifest.xml的部分。我使用的是style.xml中定义的样式。请尝试添加“fontsoferride.setDefaultFont(这是“MONOSPACE”、“fonts/HelveticaNeue.ttf”);”在com.marshall.gruppo.app.AppController而不是AppConfigHmm中创建onCreate非常奇怪。。我只是试了一下,但也没用。你找到解决办法了吗?你找到解决办法了吗?