2010-07-08 25 views
38

Ya he leído algunos artículos y buscado en Google, pero no pude hacerlo.Fuentes personalizadas en Android

Mi problema es con respecto a la fuente de la cara.

En Android, solo hay 4 atributos en "android:typeface": Normal, Sans, Serif, Monospace.

Entonces, ¿qué tengo que hacer para usar "Verdana" en mi aplicación?

Por favor sugiérame una forma correcta de usar esta fuente en mi aplicación Android.

+0

Marca esta publicación: [http://stackoverflow.com/questions/2888508/how-to-change-the-font-on-the-text-view-in-android](http://stackoverflow.com/questions/2888508/how-to-change-the-font-on-the-text-view-in-android) – Praveen

+0

Verifique este también: http://stackoverflow.com/a/14558090/693752 – Snicolas

+0

http://stackoverflow.com/questions/9030204/how-to-use-custom-font-in-android-xml/9035924#9035924 – Vins

Respuesta

76

Este es un ejemplo simple ... cree una carpeta en la raíz de su proyecto llamada assets/fonts/ y luego pegue el archivo de fuentes TTF (en este caso Verdana.ttf). Entonces, si usted desea aplicar a ese tipo de letra, por ejemplo un TextView, haga lo siguiente:

import android.graphics.Typeface; 

public class FontSampler extends Activity { 
    @Override 
    public void onCreate(Bundle icicle) { 
    super.onCreate(icicle); 
    setContentView(R.layout.main); 

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

    tv.setTypeface(face); 
    } 
} 

Este ejemplo fue tomado del libro ComonsWare (escrito por Mark Murphy). Puede download the full example from GitHub.

+6

¿hay alguna manera de aplicar esto a todas las aplicaciones de texto de ancho en lugar de vistas de texto individuales? –

+1

¿Puede establecer la fuente para un control a través del diseño xml? –

+0

Sí y no. No puede hacerlo de la caja ... pero podría extender 'TextView' para agregar dicha funcionalidad. – Cristian

4

Puede utilizar PixlUI en https://github.com/neopixl/PixlUI

importar su .jar y utilizarlo en XML

<com.neopixl.pixlui.components.textview.TextView 
    android:id="@+id/textView1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/hello_world" 
    pixlui:typeface="GearedSlab.ttf" /> 
+0

Intenté su biblioteca, pero parece que no hay ningún efecto para android: textStyle = "bold" si cambio TextView a pixlui TextView. (v 1.0.5) – mrmoment

0
// My example show you how to change fonts into a normal textView or list view 

create a fonts folder into your assets dir of android and copy your custom font in that .. 
assets/fonts/monaco.ttf 

// Font path 
String fontPath = "fonts/monaco.ttf"; 

// Loading Font Face 
Typeface tf = Typeface.createFromAsset(getAssets(), fontPath); 

// CASE 1 : Inside your list view   
holder.name = (TextView) convertView 
       .findViewById(R.id.textView_cityName); 

// set name of text in each row 
holder.name.setText(CitiesNames.get(position)); 

// set the type of font you want to set 
holder.name.setTypeface(tf); 

// CASE 2 : Inside your text view 

TextView tx = (TextView)findViewById(R.id.textview1); 
tx.setTypeface(tf); 

//vKj 
-1
TextView textView = (Textview) findViewById(R.id.mytext); 
Typeface face=Typeface.createFromAsset(getAssets(), 
             "fonts/Verdana.ttf"); 
textView.setTypeFace(face); 
+0

¿Por qué repitió el código/respuesta nuevamente? –

2

Puede utilizar biblioteca simple EasyFonts tercero para establecer variedad de fuente personalizada a su TextView. Al usar esta biblioteca, no debe preocuparse por descargar y agregar fuentes en la carpeta assets/fonts. También sobre la creación de objetos Tipo de letra.

Esta biblioteca no proporciona la cara Verdana Font.

Pero proporcione las siguientes caras de fuente. Que te gustaría usar

  • Roboto
  • Droid Serif
  • Droid Robot
  • Libertad
  • Fun Raiser
  • Nación Android
  • verde aguacate
  • Reconocimiento

Simplemente:

TextView myTextView = (TextView)findViewById(R.id.myTextView); 
myTextView.setTypeface(EasyFonts.robotoThin(this)); 

Soy autor de esta biblioteca.

3

¡¡Bien !!
Esta pregunta es bastante viejo, pero todavía si alguien está buscando la respuesta (en 2015) sobre cómo aplicar fuente personalizada a todos los Textviews a través del código XML ver directamente debajo:

Primera:
necesitamos añadir carpeta activos dentro de fuente personalizado dentro de su directorio de aplicaciones:
.ttf o .otf tanto trabajo en caso de Android

Segundo:
Crear clase CustomTextView que se extiende TextView, como a continuación:

public class CustomTextView extends TextView { 

public CustomTextView(Context context) { 
    super(context); 
    } 

public CustomTextView(Context context, AttributeSet attrs, int defStyleAttr) { 
    super(context, attrs, defStyleAttr); 
    } 

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

@Override 
public void setTypeface(Typeface tf) { 
    super.setTypeface(FontCache.getFont(getContext(),"fonts/<font_name>")); 
    } 
} 

Tercero:
clase fontcache siendo utilizado dentro de setTypeface CustomTextView() method.Purpose es hacer el almacenamiento en caché de fuentes básico usando HashMap:

public class FontCache { 

private static Map<String,Typeface> fontMap = new HashMap<String,Typeface>(); 

public static Typeface getFont(Context context,String fontname){ 
    if(fontMap.containsKey(fontname)){ 
     return fontMap.get(fontname); 
     } 
    else{ 
     Typeface tf = Typeface.createFromAsset(context.getAssets(),fontname); 
     fontMap.put(fontname,tf); 
     return tf; 
     } 
    } 
} 

Cuarto: [Paso final] Todo lo que hacemos ahora es usar el CustomTextView directamente dentro de nuestro archivo xml donde se requiera una fuente personalizada de texto:

<<package_name>.CustomTextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Custom Font Text" 
    android:textSize ="18sp" 
    android:textAppearance="?android:textAppearanceSmall" 
    android:id="@+id/custom_txt" 
    /> 

Lo sentimos, si esto ya ha sido publicado en algún lugar de SO. ¡Solo pensé compartir si ayuda a alguien!

1

Para cambiar la (medida) de la fuente de su aplicación a nivel mundial, echar un vistazo a Calligraphy

Basta con añadir a su caligrafía gradle.build y añadir el siguiente fragmento de su Application.onCreate():

CalligraphyConfig.initDefault(new CalligraphyConfig.Builder() 
         .setDefaultFontPath("fonts/MyCustomFont.ttf") 
         .setFontAttrId(R.attr.fontPath) 
         .build() 
     ); 

y en toda actividad añadir lo siguiente:

@Override 
protected void attachBaseContext(Context newBase) { 
    super.attachBaseContext(CalligraphyContextWrapper.wrap(newBase)); 
} 

Eso es todo lo que necesita hacer para cambiar la fuente a nivel mundial en su aplicación. Eche un vistazo a los documentos para obtener más detalles.

Cuestiones relacionadas