Cómo agregar una fuente como recurso XML

Android 8.0 (nivel de API 26) incorpora fuentes en XML, una función que te permite usar fuentes como recursos. Puedes agregar el archivo font en la carpeta res/font/ para agrupar las fuentes como recursos. Estas fuentes se compilan en tu archivo R y están disponibles automáticamente en Android Studio. Puedes acceder a los recursos de fuentes mediante el tipo de recurso font. Para por ejemplo, para acceder a un recurso de fuente, usa @font/myfont o R.font.myfont.

Para usar las fuentes en la función XML en dispositivos con Android 4.1 (nivel de API 16) y versiones posteriores, usa la biblioteca de compatibilidad 26.0. Más información sobre el uso de la biblioteca de compatibilidad, consulta el Usa la sección de la biblioteca de compatibilidad.

Para agregar fuentes como recursos, realiza los siguientes pasos en Android Estudio:

  1. Haz clic con el botón derecho en la carpeta res y ve a Nuevo > Directorio de recursos de Android. El Aparecerá la ventana New Resource Directory.
  2. En la lista Resource type, selecciona font y, luego, haz clic en Aceptar.

    Nota: El nombre del directorio de recursos debe ser font.

    Adición del directorio de recursos de fuentes

    Figura 1: Cómo agregar el directorio de recursos de fuentes

  3. Agrega los archivos de fuentes en la carpeta font.

    La estructura de carpetas a continuación genera R.font.dancing_script, R.font.lobster y R.font.typo_graphica.

    Adición de los archivos de fuentes en el directorio de recursos

    Figura 2: Agrega los archivos de fuentes del directorio res/font.

  4. Haz doble clic en un archivo de fuente para obtener una vista previa de las fuentes del archivo en el editor. Vista previa del archivo de fuente

    Figura 3: Vista previa del archivo de fuente

Cómo crear una familia de fuentes

Una familia de fuentes es un conjunto de archivos de fuentes junto con detalles de estilo y peso. En Android, puedes crear una nueva familia de fuentes como un recurso XML y acceder a ella como una sola unidad, en lugar de hacer referencia a cada estilo y peso como recursos separados. Al hacer esto, permites que el sistema seleccione la fuente correcta. según el estilo de texto que uses.

Para crear una familia de fuentes, sigue estos pasos en Android Studio:

  1. Haz clic con el botón derecho en la carpeta font y selecciona Nuevo > Archivo de recursos de fuentes. Aparecerá la ventana New Resource File.
  2. Ingresa el nombre del archivo y haz clic en Aceptar. Se abrirá en el editor, el nuevo XML de recursos de fuentes.
  3. Adjunta cada atributo de peso, estilo y archivo de fuente en el elemento <font>. En el siguiente XML, se muestra cómo se agregan los atributos relacionados con fuentes en el XML de recursos de fuentes:
    <?xml version="1.0" encoding="utf-8"?>
    <font-family xmlns:android="http://schemas.android.com/apk/res/android">
        <font
            android:fontStyle="normal"
            android:fontWeight="400"
            android:font="@font/lobster_regular" />
        <font
            android:fontStyle="italic"
            android:fontWeight="400"
            android:font="@font/lobster_italic" />
    </font-family>
    

Cómo usar fuentes en diseños XML

Usa tus fuentes, ya sea un único archivo de fuente o una fuente de una familia de fuentes, en TextView objetos o estilos utilizando el fontFamily.

Nota: Cuando usas una familia de fuentes, el objeto TextView cambia automáticamente, según sea necesario, para usar los archivos de fuentes de esa familia.

Cómo agregar fuentes a una TextView

Para configurar una fuente para un elemento TextView, realiza una de las siguientes acciones: lo siguiente:

  • En el archivo en formato XML de diseño, configura el atributo fontFamily en el archivo de fuentes al que deseas acceder.
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:fontFamily="@font/lobster"/>
    
  • Abre la ventana Properties para configurar la fuente correspondiente al objeto TextView.
    1. Selecciona una vista para abrir la ventana Properties.

      Nota: La ventana Properties solo está disponible cuando el editor de diseño está abierto. Selecciona la pestaña Design en la parte inferior de la ventana.

    2. Expande la propiedad textAppearance y selecciona la fuente de la lista fontFamily.
    3. Selección de la fuente desde Properties

      Figura 4: Selecciona la fuente en la ventana Properties.

La vista previa del diseño de Android Studio, que se muestra en el panel del extremo derecho de la Figura 5, te permite obtener una vista previa del conjunto de fuentes en TextView.

Previsualización de las fuentes en la vista previa del diseño

Figura 5: Vista previa de las fuentes en la vista previa de diseño

Cómo agregar fuentes a un estilo

Abre el archivo styles.xml y configura fontFamily al archivo de la fuente al que deseas acceder.

  • <style name="customfontstyle" parent="@android:style/TextAppearance.Small">
        <item name="android:fontFamily">@font/lobster</item>
    </style>
    
  • Cómo usar fuentes de manera programática

    Para recuperar fuentes de manera programática, llama al método getFont(int) y proporciona el identificador de recursos de la fuente que deseas recuperar. Este método muestra un objeto Typeface. Aunque el sistema elige la mejor estilo para ti a partir de las fuentes' información, puedes usar el setTypeface(android.graphics.Typeface, int) para configurar el tipo de letra con estilos específicos.

    Nota: El elemento TextView lo hace por ti.

    Kotlin

    val typeface = resources.getFont(R.font.myfont)
    textView.typeface = typeface
    

    Java

    Typeface typeface = getResources().getFont(R.font.myfont);
    textView.setTypeface(typeface);
    

    Usar la Biblioteca de soporte

    La biblioteca de compatibilidad 26.0 admite fuentes en XML. en dispositivos con Android 4.1 (nivel de API 16) y versiones posteriores.

    Nota: Cuando declaras familias de fuentes en diseño XML a través de la biblioteca de compatibilidad, usa el espacio de nombres app para asegurarte de que se carguen las fuentes.

    <?xml version="1.0" encoding="utf-8"?>
    <font-family xmlns:app="http://schemas.android.com/apk/res-auto">
        <font app:fontStyle="normal" app:fontWeight="400" app:font="@font/myfont-Regular"/>
        <font app:fontStyle="italic" app:fontWeight="400" app:font="@font/myfont-Italic" />
    </font-family>
    

    Para recuperar fuentes de forma programática, llama al método ResourceCompat.getFont(Context, int) y proporciona un instancia de Context y el identificador de recursos.

    Kotlin

    val typeface = ResourcesCompat.getFont(context, R.font.myfont)
    

    Java

    Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont);