Tüm Uygulama için yazı tipi ayarlamak mümkün mü?
Benim bütün uygulama için belirli bir yazı tipi kullanmak istiyorum. Var .aynı dosya ttf. Varsayılan yazı tipi, uygulama başlangıç olarak ayarlayın ve uygulamayı başka bir yerde kullanmak mümkün mü? Set ne zaman, nasıl düzen benim XMLs içinde kullanabilirim?
Örnek kod, bana burada yardım edebilecek öğretici takdir edilir.
Teşekkürler.
CEVAP
Yansıması ile Evet. Bu işleri (**10):
import java.lang.reflect.Field;
import android.content.Context;
import android.graphics.Typeface;
public final class FontsOverride {
public static void setDefaultFont(Context context,
String staticTypefaceFieldName, String fontAssetName) {
final Typeface regular = Typeface.createFromAsset(context.getAssets(),
fontAssetName);
replaceFont(staticTypefaceFieldName, regular);
}
protected static void replaceFont(String staticTypefaceFieldName,
final Typeface newTypeface) {
try {
final Field staticField = Typeface.class
.getDeclaredField(staticTypefaceFieldName);
staticField.setAccessible(true);
staticField.set(null, newTypeface);
} catch (NoSuchFieldException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
}
}
}
Daha sonra birkaç varsayılan yazı tipleri, application bir sınıfta örneğin aşırı yük gerekir:
public final class Application extends android.app.Application {
@Override
public void onCreate() {
super.onCreate();
FontsOverride.setDefaultFont(this, "DEFAULT", "MyFontAsset.ttf");
FontsOverride.setDefaultFont(this, "MONOSPACE", "MyFontAsset2.ttf");
FontsOverride.setDefaultFont(this, "SERIF", "MyFontAsset3.ttf");
FontsOverride.setDefaultFont(this, "SANS_SERIF", "MyFontAsset4.ttf");
}
}
Ya tabi eğer aynı yazı tipi dosyası kullanıyorsanız, bu sadece bir kez yüklemek için artırabilirsiniz.
Ancak sadece bir geçersiz kılma eğilimindedir, ki "MONOSPACE"
, sonra o yazı tipi yazı tipi uygulama geniş zorlamak için bir stili ayarlayın:
<resources>
<style name="AppBaseTheme" parent="android:Theme.Light">
</style>
<!-- Application theme. -->
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:typeface">monospace</item>
</style>
</resources>
API 21 Android 5.0
İşe yaramıyor bu yorumlar raporları hakkında küçük bir araştırma yaptım ve tema android:Theme.Material.Light
ile uyumsuz gibi görünüyor.
Eğer bu konu sizin için önemli ise, eski bir tema, örneğin kullanın:
<style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
<item name="android:typeface">monospace</item>
</style>
Nasıl Emacs yazı tipi boyutunu ayarlam...
Nasıl kalın yazı tipi stilini ayarlama...
Nasıl metin ayarlamak için yazı tipi b...
Android: tüm uygulama için özel yazı t...
Nasıl tüm Android uygulaması için vars...