Fonts in XML

Android 8.0 (livello API 26) introduce una nuova funzionalità, Fonts in XML, che consente di utilizzare i font come risorse. Puoi aggiungere il file font nella cartella res/font/ per raggruppare i font come risorse. Questi font sono compilati nel tuo file R e sono automaticamente disponibili in Android Studio. È possibile accedere alle risorse dei font con l’aiuto di un nuovo tipo di risorsa, font. Ad esempio, per accedere a una risorsa font, utilizzare @font/myfont, o R.font.myfont.

Per utilizzare la funzione Fonts in XML su dispositivi con Android 4.1 (livello API 16) e superiori, utilizzare la libreria di supporto 26. Per maggiori informazioni sull’uso della libreria di supporto, fai riferimento alla sezione Uso della libreria di supporto.

Per aggiungere i font come risorse, esegui i seguenti passi in Android Studio:

  1. Fai clic con il tasto destro del mouse sulla cartella res e vai su New > directory risorse Android.

    Appare la finestra New Resource Directory.

  2. Nell’elenco Resource type, selezionare font, quindi fare clic su OK.

    Nota: Il nome della directory di risorse deve essere font.

    Aggiungimento della directory di risorse font

    Figura 1. Aggiunta della directory delle risorse dei font

  3. Aggiungi i tuoi file di font nella cartella dei font.

    La struttura della cartella sottostante genera R.font.dancing_scriptR.font.lobster, e R.font.typo_graphica.

    Aggiungere i file dei font nella directory delle risorse

    Figura 2. Aggiunta dei file di font nella directory delle risorse

  4. Fare doppio clic su un file di font per vedere in anteprima i font del file nell’editor. Anteprima del file di font

    Figura 3. Anteprima del file di font

Creazione di una famiglia di font

Una famiglia di font è un insieme di file di font con i suoi dettagli di stile e peso. In Android, è possibile creare una nuova famiglia di font come risorsa XML e accedervi come una singola unità, invece di fare riferimento ad ogni stile e peso come risorse separate. Facendo questo, il sistema può selezionare il font corretto in base allo stile di testo che si sta cercando di utilizzare.

Per creare una famiglia di font, esegui i seguenti passi in Android Studio:

  1. Fate clic con il tasto destro del mouse sulla cartella font e andate su New > Font resource file. Appare la finestra New Resource File.
  2. Inserisci il nome del file e poi clicca su OK. Il nuovo XML delle risorse di font si apre nell’editor.
  3. Chiudi ogni file di font, stile e attributo di peso nell’elemento <font>. Il seguente XML illustra l’aggiunta di attributi relativi ai font nell’XML della risorsa font:
    <?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>

Utilizzare i font nei layout XML

Usate i vostri font, sia un singolo file di font che un font di una famiglia di font, in un oggetto TextView o negli stili. Per aggiungere i font all’oggetto TextView o negli stili, usate l’attributo fontFamily.

Nota: Quando si usa una famiglia di font, il TextView passa da solo, se necessario, a usare i file di font di quella famiglia.

Aggiungere dei font a una TextView

Per impostare un font per il TextView, fate una delle seguenti cose:

  • Nel file XML del layout, impostare l’attributo fontFamily sul file del font a cui si vuole accedere.
    <TextView android:layout_width="wrap_content" android:layout_height="wrap_content" android:fontFamily="@font/lobster"/>
  • Aprire la finestra Proprietà per impostare il font per il TextView.
    1. Selezionare una vista per aprire la finestra delle proprietà.

      Nota: La finestra delle proprietà è disponibile solo quando l’editor di design è aperto. Seleziona la scheda Design nella parte inferiore della finestra.

    2. Espandi la proprietà textAppearance, e poi seleziona il font dalla lista fontFamily.
    3. Selezione del font dalle Proprietà

      Figura 4. Selezione del font dalla finestra delle proprietà

L’anteprima del layout di Android Studio, mostrata nel riquadro più a destra della Figura 5, permette di vedere in anteprima il font impostato nel TextView.

Anteprima dei font nell'anteprima del layout

Figura 5. Anteprima dei font nell’anteprima del layout

Aggiungere i font allo stile

Aprire il styles.xml, e impostare l’attributo fontFamily sul file del font a cui si vuole accedere.

  • <style name="customfontstyle" parent="@android:style/TextAppearance.Small"> <item name="android:fontFamily">@font/lobster</item></style>
  • Utilizzare i font programmaticamente

    Per recuperare i font programmaticamente, chiamate il metodo getFont(int) e fornite l’identificatore di risorsa del font che volete recuperare. Questo metodo restituisce un oggetto Typeface. Anche se il sistema sceglie lo stile migliore per voi dalle informazioni sui font, potete usare il metodo setTypeface(android.graphics.Typeface, int) per impostare il carattere con stili specifici.

    Nota: Il TextView lo fa già per te.

    Kotlin

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

    Java

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

    Usare la libreria di supporto

    La libreria di supporto 26.0 fornisce il supporto alla funzione Fonts in XML sui dispositivi con Android 4.1 (livello API 16) e successivi.

    Nota: quando dichiari le famiglie di font nel layout XML attraverso la libreria di supporto, usa lo spazio dei nomi dell’app per garantire il caricamento dei tuoi font.

    <?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>

    Lascia un commento

    Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *