Tipografía, Controles Personalizados y más en Android

LIBRETA
Ahora vamos a hacer varias cosas que había tenido pendiente como agregar un nuevo tipo de letra a un componente TextView y crear sus propios atributos.

Primero tenemos que crear una nueva clase que extienda de TextView

package mx.com.qbit.components;
...
public class CustomTextView extends TextView {
 
    public CustomTextView(Context context) {
        super(context);
    }
 
    public CustomTextView(Context context, AttributeSet attrs) {
        super(context, attrs);
        setCustomFont(context, attrs);
    }
 
    public CustomTextView(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        setCustomFont(context, attrs);
    }
 
    private void setCustomFont(Context context, AttributeSet attribute) {
        TypedArray styleAttributes = context.obtainStyledAttributes(attribute, R.styleable.CustomTextView);
        String customFontName = styleAttributes.getString(R.styleable.CustomTextView_customFont);
        setTypeface(
                Typeface.createFromAsset(context.getAssets(), customFontName)
        );
        styleAttributes.recycle();
    }
 
}

Posteriormente creamos una carpeta assets en donde vamos a colocar los archivos con extensión “ttf”. Para esto, en Android Studio damos clic con el botón secundario del ratón, sobre algunas de las carpetas localizadas en la ventana “Project”; seleccionamos “New>Folder>Assets Folder”.

Después agregamos una nuevo archivo XML en la carpeta “values” y colocamos la siguiente información que indica la nueva propiedad de nuestro componente “CustomTextView”

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="CustomTextView">
        <attr name="customFont" format="string"/>
    </declare-styleable>
</resources>

Por último en nuestro “layout” colocamos el nuevo componente:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:custom="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
...
 
    <mx.com.qbit.components.CustomTextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                custom:customFont="My_font.ttf"
                />
 
</LinearLayout>

Analista/Desarrollador y cofundador de QBit Mexhico. Tecnologías utilizadas Android, Java (EJB, Servlets, Faces, Groovy & Grails, Maven, Swing), .Net (C#, VB, ASP, MVC), Delphi, Spring, Hibernate, DTSx, Oracle, T-SQL, Firebird, MySQL, MongoDB, NodeJs, ReactJs (Flux). Sistemas Operativos Mac, Ubuntu y Windows.

Twitter LinkedIn 

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *