Adicionar uma fonte como um recurso XML

O Android 8.0 (API de nível 26) introduz fontes em XML, um recurso que permite que você use fontes como recursos. Você pode adicionar o arquivo font na pasta res/font/ para agrupar fontes como recursos. Essas fontes são compiladas no arquivo R e ficam disponíveis automaticamente no Android Studio. É possível acessar os recursos de fonte usando o tipo de recurso font. Para exemplo, para acessar um recurso de fonte, use @font/myfont ou R.font.myfont.

Para usar o recurso de fontes em XML em dispositivos com Android 4.1 (nível 16 da API) e versões mais recentes, use a Biblioteca de Suporte 26.0. Para mais informações sobre o uso da Biblioteca de Suporte, consulte Usar a Biblioteca de Suporte.

Para adicionar fontes como recursos, siga estas etapas no Android Estúdio:

  1. Clique com o botão direito do mouse na pasta res e acesse Novo > Diretório de recursos do Android (link em inglês). A A janela New Resource Directory será exibida.
  2. Na lista Tipo de recurso, selecione fonte e clique em OK.

    Observação: o nome do diretório de recursos precisa ser font.

    Adicionar o diretório de recursos de fontes

    Figura 1. Adicionar o diretório de recursos de fontes.

  3. Adicione seus arquivos de fontes na pasta font.

    A estrutura de pasta abaixo gera R.font.dancing_script, R.font.lobster e R.font.typo_graphica.

    Adicionar os arquivos de fontes no diretório de recursos

    Figura 2. Adicione os arquivos de fonte ao diretório res/font.

  4. Clique duas vezes em um arquivo de fontes para visualizar as fontes do arquivo no editor. Visualizar o arquivo de fontes

    Figura 3. Visualização do arquivo da fonte.

Criar uma família de fontes

Uma família de fontes é um conjunto de arquivos de fontes com detalhes de estilo e peso. No Android, você pode criar uma nova família de fontes como um recurso XML e acessá-la como uma única unidade, em vez de referenciar cada estilo e peso como recursos separados. Ao fazer isso, você permite que o sistema selecione a fonte correta com base no estilo de texto usado.

Para criar uma família de fontes, siga estas etapas no Android Studio:

  1. Clique com o botão direito do mouse na pasta font e selecione Novo > Arquivo de recurso de fonte. A janela New Resource file será exibida.
  2. Insira o nome do arquivo e clique em OK. O novo XML de recurso de fontes será aberto no editor.
  3. Inclua cada arquivo de fonte, estilo e atributo de peso no elemento <font>. O XML a seguir ilustra como adicionar atributos relacionados à fonte no XML de recurso de fontes:
    <?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>
    

Usar fontes em layouts XML

Use suas fontes, de um único arquivo ou de uma fonte família de fontes, em TextView objetos ou em estilos usando o fontFamily.

Observação: quando você usa uma família de fontes, a TextView é alternada por conta própria, conforme necessário, para usar os arquivos de fonte dessa família.

Adicionar fontes a uma TextView

Para definir uma fonte para uma TextView, siga um dos seguinte:

  • No arquivo XML de layout, defina o atributo fontFamily para o arquivo de fontes que você quer acessar.
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:fontFamily="@font/lobster"/>
    
  • Abra a janela Properties para definir a fonte como TextView.
    1. Selecione uma visualização para abrir a janela Properties.

      Observação: a janela Properties só fica disponível quando o editor de design está aberto. Selecione a guia Design na parte inferior da janela.

    2. Expanda a propriedade textAppearance e, em seguida, selecione a fonte da lista fontFamily.
    3. Selecionar a fonte em &quot;Properties&quot;

      Figura 4. Selecione a fonte na janela Properties.

A visualização de layout do Android Studio, mostrada no painel mais à direita na Figura 5, permite visualizar a fonte definida na TextView.

Visualizar fontes na visualização de layout

Figura 5. Visualização de fontes na visualização de layout.

Adicionar fontes a um estilo

Abra o arquivo styles.xml e defina o fontFamily ao arquivo de fonte que você quer acessar.

  • <style name="customfontstyle" parent="@android:style/TextAppearance.Small">
        <item name="android:fontFamily">@font/lobster</item>
    </style>
    
  • Usar fontes de forma programática

    Para recuperar fontes de forma programática, chame o método getFont(int) e informe o identificador de recurso da fonte que você quer recuperar. Este método retorna um objeto Typeface. Embora o sistema escolha o estilo das fontes informações, você pode usar o setTypeface(android.graphics.Typeface, int) para definir a família tipográfica com estilos específicos.

    Observação:o TextView faz isso por você.

    Kotlin

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

    Java

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

    Usar a Biblioteca de Suporte

    A Biblioteca de Suporte 26.0 oferece suporte a fontes em XML em dispositivos com o Android 4.1 (nível 16 da API) e versões mais recentes.

    Observação: Quando você declara famílias de fontes no layout XML usando a Biblioteca de Suporte, Use o namespace app para garantir que suas fontes sejam carregadas.

    <?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 fontes de forma programática, chame o método ResourceCompat.getFont(Context, int) e forneça um instância de Context e o identificador de recurso.

    Kotlin

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

    Java

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