Jak używać niestandardowej czcionki w projekcie napisanym w Android Studio

Odpowiedzi:

342

Aktualizacja 2020:

Utwórz folder o nazwie czcionka w folderze res i skopiuj czcionkę

wprowadź opis zdjęcia tutaj

<TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:fontFamily="@font/abc_font" />

Do użytku programowego:

textView.setTypeface(ResourcesCompat.getFont(context, R.font.abc_font))
Asim Roy
źródło
10
Każdy ładujący niestandardowe czcionki z zasobów powinien zauważyć, że w Androidzie 5.0 występuje błąd, w wyniku którego niektóre czcionki nie ładują się. Podczas gdy ten problem został rozwiązany w Androidzie 5.1, obejściem dla obsługi 5.0 jest ponowne napisanie czcionek ttf. Zobacz ten problem, aby uzyskać więcej informacji stackoverflow.com/questions/27269264/…
BrentM
Druga opcja działała dla mnie idealnie. Dzięki za to!
Emzor
2
Użyłem this.getContext (). getApplicationContext (). getAssets (), aby znaleźć katalog (Android Studio 2.1)
kuzdu 26.04.16
1
@kuthue onCreate () jest w porządku. Jeśli chcesz zmienić czcionkę, gdy użytkownik korzysta z aplikacji, możesz umieścić ją w miejscu, w którym chcesz ją zmienić. Działa to również w przypadku przycisków
młot rockowy
1
Jak ustawić, aby domyślną czcionką dla całego projektu była niestandardowa czcionka, którą dodaję? Czy to właśnie robi pierwszy przykład kodu?
Yonatan Nir
97

https://i.stack.imgur.com/i6XNU.png

  1. Wybierz Plik> Nowy> Folder> Folder zasobów

  2. Kliknij koniec

  3. Kliknij zasoby prawym przyciskiem myszy i utwórz folder o nazwie czcionki

  4. Umieść plik czcionek w zasobach > czcionek

  5. Użyj kodu poniżej, aby zmienić czcionkę textView

    TextView textView = (TextView) findViewById(R.id.textView);
    Typeface typeface = Typeface.createFromAsset(getAssets(), "fonts/yourfont.ttf");
    textView.setTypeface(typeface);
Ehsan.R
źródło
12
jak korzystać z tego w XML?
Suisse
4
W tym samouczku przedstawiono sposób korzystania z niego w pliku XML: stacktips.com/tutorials/android/…
Dinesh
@Suisse Support Library 26 zapewnia pełne wsparcie dla tej funkcji na urządzeniach z systemem wersje API 14 i wyższy linku
Ehsan.R
66

Istnieje wiele sposobów ustawiania niestandardowej rodziny czcionek w polu, a ja używam w ten sposób poniżej.

Aby dodać czcionki jako zasoby, wykonaj następujące kroki w Android Studio:

1) Kliknij prawym przyciskiem myszy folder res i wybierz Nowy> katalog zasobów Androida. Zostanie wyświetlone okno Nowy katalog zasobów.

2) Na liście Typ zasobu wybierz czcionkę, a następnie kliknij przycisk OK.

Uwaga: Nazwa katalogu zasobów musi być czcionką.

3) Dodaj pliki czcionek w folderze czcionek. wprowadź opis zdjęcia tutaj

Dodaj czcionkę w żądanym widoku w pliku xml:

wprowadź opis zdjęcia tutaj

Uwaga: Wymagały do ​​tego jednak następujących rzeczy:

  1. Android Studio powyżej do wersji kanaryjskiej 3.0.

  2. Twoja aktywność rozszerza AppCompatActivity.

  3. Zaktualizuj plik Gradle w ten sposób:

    compileSdkVersion 26
    buildToolsVersion "26.0.1"
    defaultConfig {        
        minSdkVersion 19
        targetSdkVersion 26
        versionCode 1
        versionName "1.0"
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }

buildtoolsVersionpowyżej 26 i minimum targetSdkVersionwymagane 26

  1. Dodaj zależności w pliku build.gradle:
classpath 'com.android.tools.build:gradle:3.0.0-beta4'
  1. gradle-wrapper.properties:
distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
Vinod Makode
źródło
42

Myślę, że zamiast pobierać plik .ttf, możemy użyć czcionek Google. Jest bardzo łatwy do wdrożenia. tylko ty musisz wykonać następujące kroki. krok 1) Otwórz layout.xml projektu i wybierz rodzinę czcionek widoku tekstu w atrybutach (załączony zrzut ekranu odniesienia) wprowadź opis zdjęcia tutaj

krok 2) W rodzinie czcionek wybierz opcję Więcej czcionek .., jeśli twojej czcionki tam nie ma. wtedy zobaczysz nowe okno, w którym możesz wpisać wymaganą czcionkę i wybrać żądaną czcionkę z tej listy, tj. Zwykła, pogrubiona, kursywa itp., jak pokazano na poniższym obrazku. wprowadź opis zdjęcia tutaj

krok 3) Następnie zobaczysz, że folder czcionek zostanie automatycznie wygenerowany w folderze / res z wybranym plikiem xml czcionek.

wprowadź opis zdjęcia tutaj

Następnie możesz bezpośrednio użyć tej rodziny czcionek w formacie xml as

      android:fontFamily="@font/josefin_sans_bold"

lub pro gramatycznie można to osiągnąć za pomocą

  Typeface typeface = ResourcesCompat.getFont(this, R.font.app_font);
  fontText.setTypeface(typeface);
Sandeep Sankla
źródło
To nie jest odpowiedź na pytanie. Nie każda czcionka jest dostępna w czcionkach Google.
Matt Fletcher,
2
Niezła odpowiedź! Jeśli nie możesz znaleźć swojej czcionki na liście - załaduj ją do folderu zasobów lub zdefiniuj za pomocą xml
Edgar Khimich
21

Witaj tutaj, mamy lepszy sposób na stosowanie czcionek na EditTexts i TextViews na Androidzie i stosowanie go w całym projekcie.

Przede wszystkim musisz utworzyć folder czcionek. Oto kroki.

1: Przejdź do (folderu projektu) Następnie aplikacja> src> main

2: Utwórz foldery o nazwie „zasoby / czcionki” w folderze głównym.

3: Umieść czcionki w folderze czcionek. Tutaj mam „MavenPro-Regular.ttf”

Oto kroki, które należy wykonać, aby zastosować niestandardowe czcionki w EditText i stosując to podejście, możesz zastosować czcionki do każdego wejścia.

1: Utwórz klasę MyEditText (preferowana nazwa ...)

2: która rozszerza EditText

3: Zastosuj czcionkę

Oto kod Przykład;

public class MyEditText extends EditText {

    public MyEditText(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
        init();
    }

    public MyEditText(Context context, AttributeSet attrs) {
        super(context, attrs);
        init();
    }

    public MyEditText(Context context) {
        super(context);
        init();
    }

    private void init() {
        if (!isInEditMode()) {
            Typeface tf = Typeface.createFromAsset(getContext().getAssets(), "fonts/MavenPro-Regular.ttf");
            setTypeface(tf);
        }
    }

}

A tutaj jest kod, jak go używać.

MyEditText editText = (MyEditText) findViewById(R.id.editText);

editText.setText("Hello");

Lub w pliku xml

   <MyEditText
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:textColor="#fff"
    android:textSize="16dp"
    android:id="@+id/editText"
    />
Mohammad Naim Dahee
źródło
Ta klasa dała mi ten błąd w czasie wykonywania: Błąd podczas pompowania klasy MyEditText
GMX
Zapoznaj się z tym linkiem, w którym możesz znaleźć wskazówki, jak rozwiązać problem.
Mohammad Naim Dahee
W obecnej wersji, myślę, że trzeba by to zmienić na „rozszerza AppCompatEditText”.
Diesel
15

Dzięki Bibliotece pomocy 26.0 (i Android O) czcionki można łatwo ładować z zasobów za pomocą: wprowadź opis zdjęcia tutaj

Typeface typeface = ResourcesCompat.getFont(Context context, int fontResourceId) 

Dokumenty dotyczące metody .

Więcej informacji można znaleźć tutaj.

makata
źródło
9

Chcę dodać swoją odpowiedź dla Androida-O i Android Studio 2.4

  1. Utwórz folder o nazwie czcionka w folderze res . Pobierz różne czcionki, które chcesz dodać do swojego projektu, przykładowe czcionki Google

  2. Wewnątrz rodziny czcionek użytkownika xml

    przykład:

    <TextView
        android:fontFamily="@font/indie_flower"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:padding="10dp"
        android:text="@string/sample_text" />

3. Jeśli chcesz, aby było to programowe, użyj następującego kodu

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

Aby uzyskać więcej informacji, kliknij link do mojego postu na blogu Style czcionek dla Androida z Android Studio 2.4

Suresh Maidaragi
źródło
6
Pamiętaj, że jeśli chcesz promować swój własny produkt / blog, musisz ujawnić swoje powiązanie , w przeciwnym razie Twoja odpowiedź może zostać oznaczona jako spam. Przeczytaj, jak nie być spamerem
DavidPostill,
Tak @PetterFriberg
Suresh Maidaragi,
8

Zgodnie z nową funkcją dostępną w systemie Android O zasoby czcionek w formacie XML są dostępne jako nowa funkcja.

Aby dodać czcionki jako zasoby, wykonaj następujące kroki w Android Studio:

1) Kliknij prawym przyciskiem myszy folder res i wybierz Nowy> katalog zasobów Androida . Zostanie wyświetlone okno Nowy katalog zasobów.

2) Na liście Typ zasobu wybierz czcionkę , a następnie kliknij przycisk OK.

Uwaga: Nazwa katalogu zasobów musi być czcionką.

3) Dodaj pliki czcionek w folderze czcionek.

Możesz uzyskać dostęp do zasobów czcionek za pomocą nowego typu zasobu, czcionki. Na przykład, aby uzyskać dostęp do zasobu czcionek, użyj @ font / myfont lub R.font.myfont.

na przykład. Typeface typeface = getResources().getFont(R.font.myfont); textView.setTypeface(typeface);

Dharmishtha
źródło
2
powinno być ResourcesCompat.getFont (kontekst, R.font.your_font)
Trung Le
7

Możesz użyć łatwej i prostej biblioteki innej firmy EasyFonts, aby ustawić różnorodne niestandardowe czcionki TextView. Korzystając z tej biblioteki, nie musisz się martwić o pobieranie i dodawanie czcionek do folderu asset / fonts. Także o tworzeniu obiektów kroju pisma. Będziesz również wolny od tworzenia folderu zasobów.

Po prostu:

TextView myTextView = (TextView)findViewById(R.id.myTextView);
myTextView.setTypeface(EasyFonts.robotoThin(this));

Istnieje wiele rodzajów czcionek udostępnianych przez tę bibliotekę.

Vijay Vankhede
źródło
6

1. dodaj plik font.ttf do folderu czcionek. Następnie dodaj ten wiersz w metodzie onCreate

    Typeface typeface = ResourcesCompat.getFont(getApplicationContext(), R.font.myfont);
    mytextView.setTypeface(typeface);

A oto mój xml

            <TextView
            android:id="@+id/idtext1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="7dp"
            android:gravity="center"
            android:text="My Text"
            android:textColor="#000"
            android:textSize="10sp"
        />
DEVSHK
źródło
4
  1. Utwórz zasoby folderu w Project -> aplikacja (lub nazwa aplikacji) -> src -> main -> prawy przycisk myszy -> Nowy -> Katalog.
  2. Następnie utwórz nowy katalog w zasobach o nazwie „czcionki”.

Aby przypisać czcionkę do tekstu Zobacz:

TextView textView = (TextView) findViewById(R.id.your_textView);

final Typeface font = Typeface.createFromAsset(context.getAssets(), "fonts/your_font_name");

twoja_font_nazwa zawiera rozszerzenie czcionki.

GmloMalo
źródło
3

Jeśli jesteś bardzo nowy na Androida, tak jak ja, może to być trochę trudne. Upewnij się, że dzwonisz:

TextView myTextView = (TextView) findViewById(R.id.textView);
Typeface typeface=Typeface.createFromAsset(getAssets(), "fonts/your font.ttf");
myTextView.setTypeface(typeface);

metoda w ramach metody takiej jak onCreate.

użytkownik4509901
źródło
3

Android 8.0 (API 26) wprowadził nowe funkcje związane z czcionkami.

1) Czcionki mogą być używane jako zasoby.

2) Czcionki do pobrania.

Jeśli chcesz używać czcionek zewnętrznych w aplikacji na Androida, możesz dołączyć pliki czcionek do apk lub skonfigurować czcionki do pobrania.

Dołączanie plików czcionek do APK : Możesz pobierać pliki czcionek, zapisywać je w res / font filer, definiować rodzinę czcionek i używać rodziny czcionek w stylach.

Aby uzyskać więcej informacji na temat używania niestandardowych czcionek jako zasobów, patrz http://www.zoftino.com/android-using-custom-fonts

Konfigurowanie czcionek do pobrania : Zdefiniuj czcionkę, podając szczegóły dostawcy czcionki, dodaj certyfikat dostawcy czcionki i używaj czcionek w stylach.

Aby uzyskać więcej informacji na temat czcionek do pobrania, zobacz http://www.zoftino.com/downloading-fonts-android

Arnav Rao
źródło
2
Oficjalna dokumentacja: developer.android.com/guide/topics/ui/look-and-feel/…
Parziphal
1
Również fakt, że niestandardowe / możliwe do pobrania czcionki zostały wprowadzone w systemie Android O (8.0), nie oznacza, że ​​nie ma dla niego kompatybilności wstecznej. Zobacz oficjalną dokumentację dotyczącą implementacji czcionek niestandardowych. Pamiętaj, że możesz także potrzebować zainstalowanego Androida Studio 3.0.
anthonymonori,
1

Najpierw utwórz assetsfolder, a następnie utwórz fontsw nim folder.

Następnie możesz ustawić fontz assetslub directoryponiżej:

public class FontSampler extends Activity {
    @Override
    public void onCreate(Bundle icicle) {
        super.onCreate(icicle);
        setContentView(R.layout.main);

        TextView tv = (TextView) findViewById(R.id.custom);
        Typeface face = Typeface.createFromAsset(getAssets(), "fonts/HandmadeTypewriter.ttf");

        tv.setTypeface(face);

        File font = new File(Environment.getExternalStorageDirectory(), "MgOpenCosmeticaBold.ttf");

        if (font.exists()) {
            tv = (TextView) findViewById(R.id.file);
            face = Typeface.createFromFile(font);

            tv.setTypeface(face);
        } else {
            findViewById(R.id.filerow).setVisibility(View.GONE);
        }
    }
} 

źródło
1

Teraz jest tak wiele sposobów na zastosowanie czcionki. Jednym z najłatwiejszych sposobów jest: 1) Kliknij prawym przyciskiem myszy folder res i wybierz Nowy> katalog zasobów Androida.

2) Z listy Typ zasobu wybierz czcionkę, a następnie kliknij przycisk OK.

3) Umieść pliki czcionek w folderze czcionek.

Priya
źródło
1

Dodaj swoje czcionki do folderu zasobów w aplikacji / src / main / resources, aby utworzyć niestandardowy widok tekstu w ten sposób:

class CustomLightTextView : TextView {

constructor(context: Context) : super(context){
    attachFont(context)
}
constructor(context: Context, attrs: AttributeSet):    super(context, attrs){
    attachFont(context)
}
constructor(context: Context, attrs: AttributeSet?,    defStyleAttr: Int) : super(context, attrs, defStyleAttr) {
    attachFont(context)
}
fun attachFont(context: Context) {
    this.setTypeface(FontCache.getInstance().getLightFont(context))
}

}

Dodaj FontCache: abyś nie musiał ciągle tworzyć krojów pisma, takich jak:

class FontCache private constructor(){

val fontMap = HashMap<String,Typeface>()

companion object {
    private var mInstance : FontCache?=null
    fun getInstance():FontCache = mInstance?: synchronized(this){
        return mInstance?:FontCache().also { mInstance=it }
    }
}

fun getLightFont(context: Context):Typeface?{
    if(!fontMap.containsKey("light")){
        Typeface.createFromAsset(context.getAssets(),"Gotham-Book.otf");
        fontMap.put("light",Typeface.createFromAsset(context.getAssets(),"Gotham-Book.otf"))
    }
    return fontMap.get("light")
}

}

I gotowe!

PS Od Androida O możesz bezpośrednio dodawać czcionki.

ROHIT LIEN
źródło
1

umieść czcionki w folderze zasobów, a następnie zastosuj fontfamily: '' swoje czcionki


źródło
-1

Dla nowych czytelników

Możesz użyć tej biblioteki Gloxey Custom Font Views

stopień zależności

  dependencies{
           compile 'io.gloxey.cfv:custom-font-views:1.0.2'
    }

Jak używać?

Utwórz zasoby folderów -> czcionki . Skopiuj czcionki do folderu czcionek .

Użyj aplikacji właściwości : font_name = "font_name_string", aby zastosować czcionkę w widoku.

Przykład

   <!--Font Names in srings.xml-->
       <string name="aadhunik">aadhunik.ttf</string>
       <string name="kung_fool">kungfool.ttf</string>
       <string name="skrova">skrova.otf</string>
       <string name="painting_in_the_sun_light">painting_in_the_sun_light.ttf</string>

   <!--Include views in layout.xml-->
       <io.gloxey.cfv.CFTextView
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:gravity="center"
       android:text="Aadhunik"
       android:textColor="#ff00"
       android:textSize="40sp"
       app:font_name="@string/aadhunik" />

       <io.gloxey.cfv.CFButton
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:text="Kung Fool"
       android:textColor="#154748"
       app:font_name="@string/kung_fool" />

       <io.gloxey.cfv.CFEditText
       android:layout_width="match_parent"
       android:layout_height="wrap_content"
       android:gravity="center"
       android:text="Hello world"
       android:textSize="30sp"
       app:font_name="@string/skrova" />

       <io.gloxey.cfv.CFCheckBox
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:layout_gravity="center"
       android:text="Painting In The Sun Light"
       android:textSize="30sp"
       app:font_name="@string/painting_in_the_sun_light" />
Adnan Bin Mustafa
źródło