2016-01-03 22 views
7

Voglio fare un'app in una lingua non inglese. Quindi ho bisogno che le visualizzazioni testuali, gli archi e il brindisi siano nella lingua non inglese. L'impostazione del carattere tipografico per ogni testo è macchinosa. C'è un modo per impostare un carattere predefinito? Quando devo fare riferimento a qualcosa in inglese (come id di email), allora posso usare il metodo textview.settypeface (xyz).Come modificare il carattere predefinito dell'app Android?

+0

puoi provare questo link https://coderwall.com/p/qxxmaa/android-use-a-custom-font-everywhere –

risposta

9

C'è una biblioteca griglia per i font personalizzati in Android: custom fonts

Ecco un esempio di come usarlo.

In Gradle è necessario inserire questa riga:

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

e poi fare una classe che estende l'applicazione di una scrittura di questo codice:

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() 
); 
} 

}

e nella classe di attività metti questo metodo prima su onCreate:

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

e l'ultima cosa nella vostra scrittura file manifesto in questo modo:

<application 
android:name=".App" 

e cambierà l'intera attività al vostro carattere !. Sono semplice e pulito!

+1

Grazie Shia per i passaggi dettagliati. Biblioteca fantastica – suku

+1

Ecco un video del ragazzo che ha realizzato la libreria spiegando come funziona https://www.youtube.com/watch?v=WZkZVCWxIXs – suku

+2

Grazie amico, mi hai salvato –

1

È possibile ottenere questo principalmente in 3 modi. Un modo potrebbe essere quello di creare un TextView personalizzato e si riferiscono che ovunque, vale a dire:

public class TypefacedTextView extends TextView { 

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

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

e dentro View.xml

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

Un altro modo è quello di utilizzare la potente libreria Calligraphy in github. see this

E, infine, è possibile ignorare le impostazioni predefinite con i propri font, see this