Android: хотите установить пользовательские шрифты для всего приложения, а не во время выполнения - PullRequest
97 голосов
/ 09 декабря 2010

Можно ли установить любой пользовательский шрифт в каждом элементе управления приложения? И не обязательно время выполнения? (т.е. из xml, если это возможно, или только один раз для всего приложения в файле JAVA)

Я могу установить шрифт для одного элемента управления из этого кода.

public static void setFont(TextView textView) {
    Typeface tf = Typeface.createFromAsset(textView.getContext()
            .getAssets(), "fonts/BPreplay.otf");

    textView.setTypeface(tf);

}

И проблема с этим кодом в том, что он должен вызываться для каждого элемента управления. И я хочу вызвать этот или любой другой подобный метод один раз, или, если возможно, установить свойство в XML. Возможно ли это?

Ответы [ 11 ]

0 голосов
/ 17 февраля 2011

Я не знаю, изменит ли это все приложение, но мне удалось изменить некоторые компоненты, которые невозможно изменить, выполнив это:

Typeface tf = Typeface.createFromAsset(getAssets(), "fonts/Lucida Sans Unicode.ttf");
Typeface.class.getField("DEFAULT").setAccessible(true);
Typeface.class.getField("DEFAULT_BOLD").setAccessible(true);
Typeface.class.getField("DEFAULT").set(null, tf);
Typeface.class.getField("DEFAULT_BOLD").set(null, tf);
...