SORU
22 Aralık 2011, PERŞEMBE


Nasıl ActionBar Başlık Özel bir yazı Tipini Ayarlamak için?

Nasıl (mümkünse) ActionBar bir başlık, özel bir yazı tipi ayarlayabilirsiniz(yalnızca sekme metin) mal varlığım bir yazı klasör? Android:logo seçeneği kullanmak istemiyorum.

CEVAP
3 Mart 2013, Pazar


Bu özel kullanarak yapabilirsiniz TypefaceSpan sınıf. customView yaklaşma eylemi genişliyor gibi diğer Eylem Çubuğu öğeleri kullanarak görüşlerini zaman sonu gelmez, çünkü yukarıda belirtilen üstün.

Bu sınıf, bu gibi bir şey olacaktır

SpannableString s = new SpannableString("My Title");
s.setSpan(new TypefaceSpan(this, "MyTypeface.otf"), 0, s.length(),
        Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);

// Update the action bar title with the TypefaceSpan instance
ActionBar actionBar = getActionBar();
actionBar.setTitle(s);

Özel 5* *sınıf Etkinlik kapsamında assets/fonts dizininizde bir yazı tipi adı geçti. Bu dosyayı yükleyen ve bellek Typeface yeni bir örneğini alır. TypefaceSpan tam uygulama şaşırtıcı derecede basittir:

/**
 * Style a {@link Spannable} with a custom {@link Typeface}.
 * 
 * @author Tristan Waddington
 */
public class TypefaceSpan extends MetricAffectingSpan {
      /** An <code>LruCache</code> for previously loaded typefaces. */
    private static LruCache<String, Typeface> sTypefaceCache =
            new LruCache<String, Typeface>(12);

    private Typeface mTypeface;

    /**
     * Load the {@link Typeface} and apply to a {@link Spannable}.
     */
    public TypefaceSpan(Context context, String typefaceName) {
        mTypeface = sTypefaceCache.get(typefaceName);

        if (mTypeface == null) {
            mTypeface = Typeface.createFromAsset(context.getApplicationContext()
                    .getAssets(), String.format("fonts/%s", typefaceName));

            // Cache the loaded Typeface
            sTypefaceCache.put(typefaceName, mTypeface);
        }
    }

    @Override
    public void updateMeasureState(TextPaint p) {
        p.setTypeface(mTypeface);

        // Note: This flag is required for proper typeface rendering
        p.setFlags(p.getFlags() | Paint.SUBPIXEL_TEXT_FLAG);
    }

    @Override
    public void updateDrawState(TextPaint tp) {
        tp.setTypeface(mTypeface);

        // Note: This flag is required for proper typeface rendering
        tp.setFlags(tp.getFlags() | Paint.SUBPIXEL_TEXT_FLAG);
    }
}

Sadece projenize yukarıdaki sınıf kopya ve aktivite uygulaması yukarıda gösterildiği gibi 10* *yöntemi.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • InfinityWard

    InfinityWard

    19 EYLÜL 2006
  • Moto Journal

    Moto Journal

    28 Mayıs 2007
  • PhoneBuff

    PhoneBuff

    10 HAZİRAN 2011