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

  • Ash100HD

    Ash100HD

    29 EKİM 2011
  • Engadget

    Engadget

    18 EYLÜL 2006
  • TheSalband Rai

    TheSalband R

    11 NİSAN 2011