¿Cómo cambiar la fuente por defecto en una aplicación Android?

publicado por: Anonymous

Tengo un ejemplo de cómo cambiar el tipo de fuente a un texto, pero lo que necesito es aplicarlo de forma global para no estar poniéndoselo a cada TextView:

public class ActividadEjemplo extends AppCompatActivity {

TextView text;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_ejemplo);
    text = (TextView)findViewById(R.id.txt1);
    String font_path = "font/Quicksand-Regular.ttf";
    Typeface fuente = Typeface.createFromAsset(getAssets(),font_path);
    text.setTypeface(fuente);
}
}

solución

Para usar Calligraphy de manera rápida, creas tu proyecto y agregas la referencia a la libreria

dependencies {
   compile 'uk.co.chrisjenx:calligraphy:2.1.0'
}

Luego creas una clase que haga un extends a la clase Application

MiAplicacion.java

public class MiAplicacion extends Application {

  @Override
  public void onCreate() {
      super.onCreate();
      CalligraphyConfig.initDefault(new CalligraphyConfig.Builder()
                    .setDefaultFontPath("fonts/Roboto-Regular.ttf")
                    .setFontAttrId(R.attr.fontPath)
                    .build()
      );
  }
}

Luego en tu archivo AndroidManifest.xml, dentro del tag application en la propiedad android:name colocas el nombre de tu clase creada anteriormente, quedando así:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.brandot">

  <application
    android:name=".MiAplicacion"
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/title_name"        
    android:theme="@style/AppTheme">
    <activity
        android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>        
  </application>
</manifest>

Luego dentro de tu proyecto en el directorio assets colocas tus tipos de letras, en mi caso tengo assets/fonts/Roboto-Regular.ttf. Y luego en tu clase Main agregas lo siguiente:

public class MainActivity extends AppCompatActivity {

  @Override
  protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main);       
  }    

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

De esta forma haces que todos tus componentes dentro de la actividad carguen al tipo de letra por defecto, que en este caso es Roboto-Regular.ttf.

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *