Android: Título con tipografía personalizada y color


Para esto primero debes descargar la siguiente clase desarrollada por Tristan Waddington y disponible originalmente en github

[acá está completa con los import]

import android.content.Context;
import android.graphics.Paint;
import android.graphics.Typeface;
import android.support.v4.util.LruCache;
import android.text.TextPaint;
import android.text.style.MetricAffectingSpan;

/**
* Style a {@link Spannable} with a custom {@link Typeface}.
*
* @author Tristan Waddington
*/
public class TypefaceSpan extends MetricAffectingSpan {
 /** An LruCache 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);
 }
}

Luego llamas a este método

public void setTitleActionBar(String title) {
 SpannableString s = new SpannableString(Html.fromHtml(""+title+""));
 //puedes cambiar el color en el font color='' por uno Hexadecimal
 s.setSpan(new [nombre del paquete].TypefaceSpan(this, "roboto_light.ttf"), 0, s.length(),
 Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
 getSupportActionBar().setTitle(s);
}

y listo 🙂

,

Agregar un comentario

Su dirección de correo no se hará público.

This site uses Akismet to reduce spam. Learn how your comment data is processed.