SORU
26 NİSAN 2010, PAZARTESİ


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
2 HAZİRAN 2013, Pazar


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>

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Lupe Fiasco

    Lupe Fiasco

    23 ŞUBAT 2006
  • MandMEvangelists

    MandMEvangel

    28 Ocak 2008
  • PorterRobinsonVEVO

    PorterRobins

    11 Kasım 2013