2016-01-03 23 views
7

Ich möchte eine App in einer nicht englischen Sprache erstellen. Also brauche ich Textviews, Strings und Toast in nicht-englischer Sprache. Das Festlegen der Schriftart für jeden Text ist umständlich. Gibt es eine Möglichkeit, eine Standardschriftart festzulegen? Wenn ich auf etwas auf Englisch (wie E-Mail-ID) verweisen muss, kann ich die Methode textview.settypeface (xyz) verwenden.Wie kann ich die Standardschriftart der Android-App ändern?

+0

können Sie versuchen, diesen Link https://coderwall.com/p/qxxmaa/android-use-a-custom-font-everywhere –

Antwort

9

Es gibt eine Rost Bibliothek für benutzerdefinierte Schriftarten in android: custom fonts

Hier ist ein Beispiel, wie es zu benutzen.

In gradle müssen Sie dieses Spiel setzen:

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

und dann eine Klasse machen, die Anwendung einen Schreib diesen Code erweitert:

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

}

und in der Aktivitätsklasse Stellen Sie diese Methode vor onCreate:

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

und das letzte, was in Ihrer Manifest-Datei schreiben wie folgt aus:

<application 
android:name=".App" 

und es wird die gesamte Aktivität auf Ihre Schriftart ändern !. Es ist einfach und sauber!

+1

Danke Shia für die detaillierten Schritte. Fantastische Bibliothek. – suku

+1

Hier ist ein Video von dem Mann, der die Bibliothek erklärt, wie es funktioniert https://www.youtube.com/watch?v=WZkZVCWxIXs – suku

+2

Danke Mann, Sie sparen mich –

1

Sie können dies hauptsächlich auf 3 Arten erreichen. Eine Möglichkeit wäre, eine benutzerdefinierte Textview zu erstellen und dass überall beziehen, das heißt:

public class TypefacedTextView extends TextView { 

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

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

und innen View.xml

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

Ein anderer Weg ist die leistungsstarke Calligraphy Bibliothek in Github zu verwenden. see this

Und schließlich können Sie die Standardeinstellung mit Ihren eigenen Schriftart außer Kraft setzen, see this