2016-01-03 4 views
7

Я хочу сделать приложение на неанглийском языке. Поэтому мне нужны тексты, строки и тосты на неанглийском языке. Настройка шрифта для каждого текста является громоздкой. Есть ли способ установить шрифт по умолчанию? Когда мне приходится ссылаться на что-то на английском (например, id электронной почты), я могу использовать метод textview.settypeface (xyz).Как изменить шрифт по умолчанию для Android-приложения?

+0

Вы можете попробовать эту ссылку https://coderwall.com/p/qxxmaa/android-use-a-custom-font-everywhere –

ответ

9

Там есть решётка библиотека для пользовательских шрифтов в андроиде: custom fonts

Вот пример, как использовать его.

В Gradle вам нужно поместить эту строку:

compile 'uk.co.chrisjenx:calligraphy:2.1.0' 

, а затем сделать класс, который расширяет приложению к записи этот код:

public class App extends Application { 
@Override public void onCreate() { super.onCreate(); 

CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() 
       .setDefaultFontPath("your font path") 
       .setFontAttrId(R.attr.fontPath) 
       .build() 
); 
} 

}

и в классе деятельности положить этот метод до onCreate:

@Override 
protected void attachBaseContext(Context newBase) { 
super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); 

и последнее, что в вашем файле манифеста пишут так:

<application 
android:name=".App" 

и это изменит всю деятельность на свой шрифт !. Я просто и чист!

+1

Спасибо, Шиа за подробные шаги. Фантастическая библиотека. – suku

+1

Вот видео парня, который создал библиотеку, объясняющую, как это работает. Https://www.youtube.com/watch?v=WZkZVCWxIXs – suku

+2

Спасибо, человек, вы меня спасли –

1

Вы можете достичь этого главным образом 3 способами. один из способов будет создавать пользовательские TextView и ссылаются на то, везде, то есть:

public class TypefacedTextView extends TextView { 

    public TypefacedTextView(Context context, AttributeSet attrs) { 
     super(context, attrs); 

     Typeface typeface = Typeface.createFromAsset(context.getAssets(), fontName); 
     setTypeface(typeface); 
    } 
} 

и внутри View.xml

<packagename.TypefacedTextView 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Hello"/> 

Другой способ, это использовать мощный Calligraphy библиотеку в GitHub. see this

И, наконец, вы можете переопределить значения по умолчанию с собственными шрифтами, see this

Смежные вопросы