2012-09-05 22 views
25

Duplicar posibles:
Is it possible to set font for entire Application?Android - Cómo establecer una fuente personalizada para la aplicación entera

necesito para configurar una fuente personalizada (.ttf formato) para la aplicación de todo, ¿cómo puede ¿lo hago? De Manifiesto o XML sería la mejor opción si es posible

+0

Solo porque está marcado como duplicado, no se puede proporcionar una mejor respuesta: use la biblioteca de caligrafía para lograr esto. Incluso cambia la fuente de los brindis. – suku

+0

Compruebe esto tut http://www.gadgetsaint.com/android/custom-fonts-textview-edittext-android/#.WNive2996Hs – ASP

+0

¿No usaría simplemente https://github.com/chrisjenx/Calligraphy – Fattie

Respuesta

22

EDITAR Sept 2014:

Para alguien todavía ver a este viejo terrible respuesta, la, buena respuesta real está aquí:

https://stackoverflow.com/a/16883281/1154026


VIEJO:

Su mejor apuesta sería la siguiente:

Customize Android Fonts

Así

TextView text = (TextView) findViewById(R.id.custom_font); 
    Typeface font = Typeface.createFromAsset(getAssets(), "yourfont.ttf"); 
    text.setTypeface(font); 

Con su .ttf en la raíz de la carpeta "activos".

+0

Esto funciona genial, pero si tengo un ListView, ¿cómo puedo cambiar la fuente de la fila? Supongo que es posible hacerlo a través de XML –

+0

Esa solución parece que ya no funciona en Android 5.0 ¿Alguna otra opción? –

+0

@AndreaMarioLufino Establecer este tipo de letra en su adaptador para todas las textViews conseguidas funcionaría. Digamos que tienes 'textview1, textview2' y' textView3' que solo debes usar setTypface (yourfont) en ellos. Espero eso ayude. – Recomer

7
TextView tv=(TextView)findViewById(R.id.custom); 
    Typeface face=Typeface.createFromAsset(getAssets(), 
              "fonts/Verdana.ttf"); 

    tv.setTypeface(face); 

poner el archivo de fuentes en la carpeta fuentes en/res/

Al igual que mi respuesta si es útil ...

9

cerato una subclase de Vista de Texto y usarlo en todas partes

public class RobotoTextView extends TextView { 

    public RobotoTextView(Context context, AttributeSet attrs, int defStyle) { 
     super(context, attrs, defStyle); 
     init(); 
    } 

    public RobotoTextView(Context context, AttributeSet attrs) { 
     super(context, attrs); 
     init(); 
    } 

    public RobotoTextView(Context context) { 
     super(context); 
     init(); 
    } 

    private void init() { 
     if (!isInEditMode()) { 
      Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/Roboto-Light.ttf"); 
      setTypeface(tf); 
     } 
    } 

} 

uso

<com.test.RobotoTextView 
     android:id="@+id/name" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     /> 

en código Java puede echarlo a Textview

0

se puede ampliar el TextView como se sugiere here y establecer su tipo de letra y luego usarlo en toda la aplicación.

11

Podrías hacerlo así. Crear un TextView costumbre y el uso que uno todas partes

public class MyTextView extends android.widget.TextView 
{ 

    public MyTextView(Context context) 
    { 
     this(context, null); 
    } 

    public MyTextView(Context context, AttributeSet attrs) 
    { 
     this(context, attrs, 0); 
    } 

    public MyTextView(Context context, AttributeSet attrs, int defStyle) 
    { 
     super(context, attrs); 
     if (this.isInEditMode()) return ; 

     final TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.SomeStyle); 
     final String customFont = a.getString(R.styleable.SomeStyle_font); 

     //Build a custom typeface-cache here! 
     this.setTypeface(
      Typeface.createFromAsset(context.getAssets(), customFont) 
     ); 
    } 
} 

Añadir esto a attrs.xml

<declare-styleable name="SomeStyle"> 
    <attr name="font" format="string" /> 
</declare-styleable> 

Luego, en su tema, hacer esto: Esto se asegurará de que todos los textviews usarán el estilo MyTextView

<item name="android:textViewStyle">@style/MyTextView</item> 

Y ahora podemos definir su fuente personalizada utilizando su atributo personalizado en este estilo.

<style name="MyTextView" parent="@android:style/Widget.TextView"> 
    <item name="font">MyPathToFontInAssets.ttf</item> 
</style> 

Así que cada vez que use MyTextView en el proyecto, tendrá su fuente personalizada.

IMPORTANTE: Tipos de letra no se almacenan en caché, por lo que si usted planea usar este código, también se debe construir una costumbre tipografía-caché para que pueda volver a utilizar el tipo de letra personalizado para todas las textviews. ¡Esto acelerará significativamente la aplicación!

ACTUALIZACIÓN: Como Amir estaba diciendo, esto es casi el mismo que Custom fonts and XML layouts (Android) pero también utilizo un estilo androide para utilizar automáticamente en todos los textviews en la aplicación.

+0

¡Hola! Está mostrando un error en esta línea ' @ style/MyTextView' ** Se requiere un atributo 'tipo' para ** ¿Qué debo hacer ahora? – DroidLearner

+0

Eliminé los errores agregando 'type =" string "' – DroidLearner

+0

_Typefaces no están en la memoria caché, así que si planea usar este código, también debe crear un tipo de letra personalizado cache_ ¿cómo construir una memoria caché? – DroidLearner

Cuestiones relacionadas