2015-12-02 2 views
1

Возможно ли установить пользовательский шрифт в приложении для Android?Почему мой пользовательский шрифт не применяется ко всему моему приложению?

Я пытался что отправил here, но я не знаю, где мой extends Application класс ...

Любая помощь?

EDIT:

Я попытался следующие:

  • Добавить папку активов и вставить шрифт внутри, как показано здесь:

enter image description here

  • Добавить новый класс, который простирается от Application

  • Назовите этот новый класс от моего AndroidManifest.xml.

  • Я пошел в свой стиль и добавил его.

MyApp.java:

public class MyApp extends Application { 
    @Override 
    public void onCreate() { 
    super.onCreate(); 
    FontsOverride.setDefaultFont(this, "DEFAULT", "raleway_regular.ttf"); 
    // This FontsOverride comes from the example I posted above 
    } 
    } 

AndroidManifest.xml:

<application 
     android:allowBackup="true" 
     android:icon="@mipmap/ic_launcher" 
     android:label="@string/app_name" 
     android:supportsRtl="true" 
     android:name=".MyApp" 
     android:theme="@style/AppTheme"> 
    .... 

styles.xml:

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

Но мой шрифт все еще не меняется ... любая идея?

Затем вызывается класс MyApp. Но никакого влияния на мои шрифты ...

EDIT2: Я понял, что мои кнопки применяют пользовательский шрифт после того, как я установил индивидуальный стиль для своих кнопок. Вот мой пользовательский стиль кнопки:

<style name="MyButtonStyle" parent="Widget.AppCompat.Button"> 
    <item name="textAllCaps">false</item> 
    <item name="android:textAllCaps">false</item> 
</style> 

А вот как это выглядит сейчас:

enter image description here

Итак: моя кнопка применяет стиль, но не в TextView. Любая идея о том, почему мой пользовательский шрифт не применяется ко всем элементам приложения?

ответ

1

Попробуйте этот код. Но вам нужно инициализировать TextView или Button в коде findViewByIdMethod(int id).

TextView yourTextView = findViewById(R.id.YourTextViewId);  
Typeface font = Typeface.createFromAsset(getActivity().getAssets(),"raleway_regular.ttf"); 
yourTextView.setTypeface(font); 
+0

Я знаю, что есть способы сделать это один за другим ... и это прекрасно работает один за другим. Но я хотел бы сделать это в целом ... – Sonhja

1

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

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

вам нужно поставить эту линию

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

, а затем сделать класс, который расширяет применение записи этого кода `общественного класса App расширяет приложение { @Override общественного недействительными OnCreate() { супер .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" 

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

+0

Я не ищу шрифт андроида ... Я должен использовать шрифт «Raleway» ... – Sonhja

+0

его не шрифт, чтобы изменить ваши шрифты, и вы можете добавить любой шрифт, который хотите, и он появится где бы вы ни захотели, я могу опубликовать код, как я его использовал –

+0

О, это обычная библиотека! : О, я должен попробовать! – Sonhja

0

Если вы хотите установить шрифт для всего приложения, просто следовать этому подходу https://stackoverflow.com/a/8854794/3718505.

Но он работает только для статического контента.

+0

Что вы имеете в виду со статическим контентом? – Sonhja

+0

Если вы не собираетесь менять текст. – mtwain

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