2011-06-16 13 views

Respuesta

13

Primero hay que poner el archivo TTF en la carpeta de activos y luego se puede usar el siguiente código para establecer la fuente personalizada en TextView, misma manera se puede hacer por Button:

TextView txt = (TextView) findViewById(R.id.custom_font); 
Typeface font = Typeface.createFromAsset(getAssets(), "Helv Neue 67 Med Cond.ttf"); 
txt.setTypeface(font); 
1

Se puede utilizar:

android:typeface="yourfont" 
+0

Sí correcto. Pero quiero la fuente Helv Neue 67 Med Cond. ¿Cómo puedo obtener esta fuente? – Ajn

+0

No es para fuentes personalizadas; Extienda cada elemento o mire dentro utilizando un inflador de diseño personalizado. – clwhisk

0

Tienes que descargar la fuente Helv Neue 67 Med Cond y guardarla en la carpeta de activos. dejar que la fuente descargada es myfont.ttf

utilizar el siguiente código para establecer la fuente

Typeface tf = Typeface.createFromAsset(getAssets(), "myfont.ttf"); 
     TextView TextViewWelcome = (TextView)findViewById(R.id.textViewWelcome); 
     TextViewWelcome.setTypeface(tf); 

Gracias Deepak

2

Android viene con 3 fuentes (Sans, Serif, Monospace) que puede ser accesado usando android:typeface=”FONT_NAME”.

Para poder utilizar fuente personalizada, debe utilizar un código como

TextView txt = (TextView) findViewById(R.id.custom_font); 
    Typeface typeface = Typeface.createFromAsset(getAssets(), "Helv Neue 67 Med Cond.ttf"); 
    txt.setTypeface(typeface); 

Algunas preguntas similares son Custom Fonts in Android y Android - Using Custom Font.

25

supongo que es probable que haya encontrado la respuesta, pero si no (y para otros desarrolladores), puede hacerlo de esta manera :

1. desea guardar el "Helv Neue 67 Med Cond.ttf" en la carpeta de activos. continuación

Para TextView

TextView txt = (TextView) findViewById(R.id.custom_font); 
    Typeface typeface = Typeface.createFromAsset(getAssets(), "Helv Neue 67 Med Cond.ttf"); 
    txt.setTypeface(typeface); 

para el botón

Button n=(Button) findViewById(R.id.button1); 
    Typeface typeface = Typeface.createFromAsset(getAssets(), "Helv Neue 67 Med Cond.ttf"); 
    n.setText("show"); 
    n.setTypeface(typeface); 
2

Si va a añadir la misma fuente a varios botones le sugiero que ir todo el camino y poner en práctica subclase Button:

public class ButtonPlus extends Button { 

    public ButtonPlus(Context context) { 
     super(context); 
     applyCustomFont(context); 
    } 

    public ButtonPlus(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     applyCustomFont(context); 
    } 

    public ButtonPlus(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     applyCustomFont(context); 
    } 

    private void applyCustomFont(Context context) { 
      Typeface customFont = FontCache.getTypeface("fonts/candy.ttf", context); 
      setTypeface(customFont); 
     } 
    } 

y aquí está la fontcache para reducir el uso de memoria en los dispositivos más antiguos:

public class FontCache { 

    private static Hashtable<String, Typeface> fontCache = new Hashtable<>(); 

    public static Typeface getTypeface(String name, Context context) { 
     Typeface tf = fontCache.get(name); 
     if(tf == null) { 
      try { 
       tf = Typeface.createFromAsset(context.getAssets(), name); 
      } 
      catch (Exception e) { 
       return null; 
      } 
      fontCache.put(name, tf); 
     } 
     return tf; 
    } 
} 

Y finalmente Un ejemplo de uso de un diseño:

<com.my.package.buttons.ButtonPlus 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="@string/button_sometext"/> 

esto puede parecer como un montón de trabajo, pero Me agradecerás una vez que tengas un par de puñados de botones y campos de texto en los que quieras cambiar la fuente.

También puede ver esto tutorial y un ejemplo en GitHub.

Cuestiones relacionadas