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

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);

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

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);

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"
    />

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.


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


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);


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ę.


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"
        />

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.


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.


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



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);
        }
    }
} 

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.


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.


1

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


-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" />
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.