Calligraphy, fuentes personalizadas en Android

Si hay una cosa que es un dolor de muelas en Android es cuando tienes que hacer una app que usa fuentes personalizadas. Aunque es incluso peor, si queremos usar la moderna Roboto, ya tenemos el lío formado, ya que en Android 2.3 no la tendremos tampoco. Y es que utilizar fuentes personalizadas es algo que está muy mal resuelto incluso aún hoy en la última versión del sistema (4.4.3 a día de hoy).

Básicamente para establecer una fuente distinta a las que trae el sistema por defecto, debemos instanciar la fuente (que normalmente tendremos en la carpeta assets) y asignarla a la vista de turno. El código sería algo así de horrible (horrible porque hacer esto por cada vista es una locura desde el punto de vista de mantenimiento de este tipo de código).

Typeface tf = Typeface.createFromAsset(getAssets(), 
                                       "fonts/mycustomfont.ttf");
        
TextView myView = (TextView) findViewById(android.R.id.text1);
myView.setTypeface(tf);

Vamos a ver algunas formas para mejorar lo anterior y dejar que nuestras vistas se definan de forma declarativa por completo en el XML del layout.

»