Dodawanie czcionki jako zasobu XML

Android 8.0 (poziom API 26) wprowadza czcionki w formacie XML – funkcję pozwala używać czcionek jako zasobów. Plik font możesz dodać w res/font/, aby grupować czcionki jako zasoby. Te czcionki są kompilowane w pliku R i automatycznie dostępne Android Studio. Dostęp do zasobów czcionek możesz uzyskać, korzystając z typu zasobu font. Dla: np. aby uzyskać dostęp do zasobu czcionek, użyj @font/myfont lub R.font.myfont.

Korzystanie z funkcji czcionek w formacie XML na urządzeniach z Androidem 4.1 (poziom interfejsu API 16) i nowsze muszą korzystać z Biblioteki pomocy w wersji 26.0. Więcej informacji na temat konfiguracji na temat korzystania z Biblioteki pomocy, zapoznaj się z Skorzystaj z sekcji Biblioteka pomocy.

Aby dodać czcionki jako zasoby, wykonaj te czynności na Androidzie Studio:

  1. Kliknij prawym przyciskiem myszy folder res i wybierz Nowe > Katalog zasobów Androida. Pojawi się okno New Resource Directory (Nowy katalog zasobów).
  2. Na liście Typ zasobu wybierz czcionka, a następnie kliknij OK.

    Uwaga: katalog zasobów musi mieć nazwę czcionka.

    Dodawanie katalogu zasobów czcionek

    Rysunek 1. Dodaję katalog zasobów czcionek.

  3. Dodaj pliki czcionek do folderu font.

    Poniższa struktura folderów generuje R.font.dancing_script, R.font.lobster i R.font.typo_graphica

    Dodawanie plików czcionek w katalogu zasobów

    Rysunek 2. Dodaję pliki czcionek w katalogu res/font.

  4. Kliknij dwukrotnie plik czcionek, aby wyświetlić podgląd czcionek z pliku w edytorze. Podgląd pliku czcionek

    Rysunek 3. Podgląd pliku czcionek.

Tworzenie rodziny czcionek

Rodzina czcionek to zestaw plików czcionek wraz ze szczegółami dotyczącymi stylu i grubości czcionki. W Androidzie możesz utworzyć nową rodzinę czcionek jako zasób XML i uzyskać dostęp jako pojedynczą jednostkę, zamiast odwoływać się do poszczególnych stylów i wagi i osobnymi zasobami. Pozwala to systemowi wybrać właściwą czcionkę zgodnie ze stylem tekstu.

Aby utworzyć rodzinę czcionek, wykonaj te czynności w Android Studio:

  1. Kliknij prawym przyciskiem myszy folder font i wybierz Nowe > Plik zasobów czcionki. Okno Nowy plik zasobu
  2. Wpisz nazwę pliku i kliknij OK. Nowy kod XML zasobu czcionki Plik otworzy się w edytorze.
  3. Umieść każdy plik czcionki, styl i atrybut grubości w sekcji <font> element. Poniższy kod XML ilustruje dodawanie atrybuty związane z czcionkami w pliku XML zasobu czcionek:
    <?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>
    

Używanie czcionek w układach XML

Używaj czcionek, zarówno pojedynczych plików, jak i czcionek z rodzina czcionek w języku: TextView obiektów lub stylów, korzystając z fontFamily.

Uwaga: jeśli używasz rodziny czcionek, atrybut W razie potrzeby TextView przełącza się samodzielnie, aby używać plików czcionek z tej rodziny.

Dodawanie czcionek do obiektu TextView

Aby ustawić czcionkę dla tekstu TextView, wykonaj jedną z :

  • W pliku XML układu ustaw atrybut fontFamily na wartość plik czcionki, do którego chcesz uzyskać dostęp.
    <TextView
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:fontFamily="@font/lobster"/>
    
  • Otwórz okno Właściwości i ustaw czcionkę TextView
    1. Wybierz widok, aby otworzyć okno Właściwości.

      Uwaga: dostępne jest okno Właściwości tylko wtedy, gdy edytor projektu jest otwarty. Wybierz kartę Design (Projekt) do dołu okna.

    2. Rozwiń właściwość textAppearance i wybierz czcionkę z listy fontFamily.
    3. Wybieranie czcionki we Właściwościach

      Rysunek 4. Wybranie czcionki w oknie Właściwości.

Podgląd układu Android Studio widoczny w panelu po prawej stronie na ilustracji 5. umożliwia wyświetlenie podglądu czcionki ustawionej w interfejsie TextView.

Podgląd czcionek w podglądzie układu

Rysunek 5. Podgląd czcionek w podglądzie układu.

Dodawanie czcionek do stylu

Otwórz plik styles.xml i ustaw fontFamily do pliku czcionek, do którego chcesz uzyskać dostęp.

  • <style name="customfontstyle" parent="@android:style/TextAppearance.Small">
        <item name="android:fontFamily">@font/lobster</item>
    </style>
    
  • Automatyczne używanie czcionek

    Aby automatycznie pobierać czcionki, wywołaj metodę getFont(int) i podaj parametr identyfikator zasobu czcionki, którą chcesz pobrać. Ta metoda zwraca błąd Typeface obiekt. System wybiera jednak najlepsze stylu odpowiedni dla Ciebie informacji, możesz użyć funkcji setTypeface(android.graphics.Typeface, int) aby ustawić krój czcionki z określonymi stylami.

    Uwaga: TextView robi to za Ciebie.

    Kotlin

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

    Java

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

    Korzystanie z biblioteki pomocy

    Biblioteka pomocy technicznej 26.0 obsługuje czcionki w formacie XML na urządzeniach z Androidem 4.1 (poziom interfejsu API 16) lub nowszym.

    Uwaga: Gdy zadeklarujesz rodziny czcionek w układzie XML za pomocą biblioteki pomocy, użyj przestrzeni nazw app, aby upewnić się, że Twoje czcionki się wczytają.

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

    Aby automatycznie pobierać czcionki, wywołaj metodę ResourceCompat.getFont(Context, int) i podaj wartość instancję Context i identyfikator zasobu.

    Kotlin

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

    Java

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