Android - Özel Yazı Tipini Kullanma


266

A'ya özel bir yazı tipi uyguladım TextView, ancak yazı tipini değiştirmiyor gibi görünüyor.

İşte benim kod:

    Typeface myTypeface = Typeface.createFromAsset(getAssets(), "fonts/myFont.ttf");
    TextView myTextView = (TextView)findViewById(R.id.myTextView);
    myTextView.setTypeface(myTypeface);

Biri beni bu sorundan kurtarabilir mi?


1
Sözdiziminde bir hata var, olmalımyTextView.setTypeface(myTypeface);
yuttadhammo

Bu konu
şuna



Burada tüm uygulama için yazı tipini değiştirmek için etkili bir yol var: stackoverflow.com/questions/18847531/…
Diego Palomar

Yanıtlar:


230

Mobiletuts + 'da Android için Metin biçimlendirme konusunda çok iyi bir öğretici var. Hızlı İpucu: Android Yazı Tiplerini Özelleştirme

EDIT: Şimdi kendim test. İşte çözüm. Fonts adlı bir alt klasör kullanabilirsiniz, ancak assetsklasörün klasöre gitmemesi gerekir res. Yani

varlıklar / yazı tipleri

Ayrıca, biten yazı tipi dosyasının sonunun küçük harfli olduğundan emin olun. Başka bir deyişle olmamalı, myFont.TTFancak myfont.ttf bu şekilde küçük harf olmalıdır


Çözümle olan yanıtımı şimdi düzenledim.
Octavian A. Damiean

Bana biraz çalışan demo projesi gönderebilir misiniz? Varlıklar / yazı tipleri / xyz.ttf ve varlıklar / xyz.ttf klasöründe denedim ama bu yazı tipi almaz. Yalnızca varsayılan yazı tipini görüntüler ..
RATTLESNAKE

2
Tabii burada sıkıştırılmış projeye bağlantı. dl.dropbox.com/u/8288893/customFont.zip
Octavian A. Damiean

5
Bu öğreticiyi izliyorsanız Typeface.createFromAsset (getAssets (), "fonts / yourfont.ttf") yolunu kullandığınızdan emin olun; yazı tipleri alt dizinine yerleştirdiyseniz
Jameo

dosya adına "varlıklar /" eklemeyin (çünkü createFromAssetişlev doğrudan assetsdizinin içine işaret eder )
topher

55

Bu konuda açıklanan çözümlerin çoğunu denedikten sonra, yanlışlıkla uygulamanıza kolayca özel yazı tipleri eklemenizi sağlayan bir kitaplık olan Christopher Jenkins'in ( https://github.com/chrisjenx/Calligraphy ) kütüphanesini buldum . Lib'in burada önerilen yaklaşımlara kıyasla avantajları:

  1. kendi geçersiz kılınan TextView bileşeninizi tanıtmanız gerekmez, yerleşik TextView
  2. sınıf kullanarak kitaplığı kolayca dahil edebilirsiniz
  3. Kütüphane, yazı tipi seçiminizi sınırlamaz; sadece tercihlerinizi varlık direktörüne ekleyin
  4. yalnızca özel metin görünümleri elde etmekle kalmaz, diğer tüm metin tabanlı Android bileşenleri de özel yazı tipinizi kullanarak görüntülenir.

1
ne boyutta olduğunu en app boyutunu etkileyebilir olacak çünkü kütüphanenin, önemli bir sorudur.
eRaisedToX

32

Zaten iyi cevaplar olduğunu biliyorum, ama işte tam olarak çalışan bir uygulama.

Özel metin görünümü şöyledir:

package com.mycompany.myapp.widget;

/**
 * Text view with a custom font.
 * <p/>
 * In the XML, use something like {@code customAttrs:customFont="roboto-thin"}. The list of fonts
 * that are currently supported are defined in the enum {@link CustomFont}. Remember to also add
 * {@code xmlns:customAttrs="http://schemas.android.com/apk/res-auto"} in the header.
 */
public class CustomFontTextView extends TextView {

    private static final String sScheme =
            "http://schemas.android.com/apk/res-auto";
    private static final String sAttribute = "customFont";

    static enum CustomFont {
        ROBOTO_THIN("fonts/Roboto-Thin.ttf"),
        ROBOTO_LIGHT("fonts/Roboto-Light.ttf");

        private final String fileName;

        CustomFont(String fileName) {
            this.fileName = fileName;
        }

        static CustomFont fromString(String fontName) {
            return CustomFont.valueOf(fontName.toUpperCase(Locale.US));
        }

        public Typeface asTypeface(Context context) {
            return Typeface.createFromAsset(context.getAssets(), fileName);
        }
    }

    public CustomFontTextView(Context context, AttributeSet attrs) {
        super(context, attrs);

        if (isInEditMode()) {
            return;
        } else {
            final String fontName = attrs.getAttributeValue(sScheme, sAttribute);

            if (fontName == null) {
                throw new IllegalArgumentException("You must provide \"" + sAttribute + "\" for your text view");
            } else {
                final Typeface customTypeface = CustomFont.fromString(fontName).asTypeface(context);
                setTypeface(customTypeface);
            }
        }
    }
}

İşte özel özellikler. Bu, res/attrs.xmldosyanıza gitmelidir :

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <declare-styleable name="CustomFontTextView">
        <attr name="customFont" format="string"/>
    </declare-styleable>
</resources>

İşte nasıl kullanıyorsunuz. Onu kaydırmak ve customAttrbildirimi göstermek için göreceli bir düzen kullanacağım , ancak açıkçası zaten sahip olduğunuz düzen olabilir.

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:customAttrs="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <com.mycompany.myapp.widget.CustomFontTextView
         android:layout_width="wrap_content"
         android:layout_height="wrap_content"
         android:text="foobar"
         customAttrs:customFont="roboto_thin" />

</RelativeLayout>

Projemde ne anlama geliyor customAttrs?
Skynet

@Skynet, kök görünümünüzde tanımlanan ad alanını ifade eder xmlns:customAttrs="http://schemas.android.com/apk/res-auto". Bu, özel görünümler için ayarlanan öznitelikleri otomatik olarak alır. Bu durumda, attrs.xml dosyasında tanımlanan customFont adlı bir özelliğe sahipsiniz. Anlaşmanın daha kolay bir yolu xmlns:android="http://schemas.android.com/apk/res/android", android özellikleriniz için ad alanını tanımlayana bakmaktır . Eğer bunu o şekilde değiştirirseniz, ao zaman onun yerine android:textolurdu a:text.
CodyEngel

14

Bunu daha önce başarıyla kullandım. Uygulamalarımız arasındaki tek fark, varlıklarda bir alt klasör kullanmamamdı. Ancak bunun bir şeyi değiştirip değiştirmeyeceğinden emin değilim.


13

Yazı tipini doğru yere yerleştirdiyseniz ve yazı tipi dosyasının kendisinde bir hata yoksa, kodunuzun RATTLESNAKE gibi çalışması gerekir.

Bununla birlikte, mizanpaj xml'nizde şöyle bir yazı tipi tanımlamanız çok daha kolay olurdu, örneğin:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity" >

    <!-- This text view is styled with the app theme -->
    <com.innovattic.font.FontTextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="This uses my font in bold italic style" />

    <!-- This text view is styled here and overrides the app theme -->
    <com.innovattic.font.FontTextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        app:flFont="anotherFont"
        android:textStyle="normal"
        android:text="This uses another font in normal style" />

    <!-- This text view is styled with a style and overrides the app theme -->
    <com.innovattic.font.FontTextView
        style="@style/StylishFont"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="This also uses another font in normal style" />

</LinearLayout>

Eşlik edenlerle res/values/styles.xml:

<?xml version="1.0" encoding="utf-8"?>
<resources xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools">

    <!-- Application theme -->
    <!-- Use a different parent if you don't want Holo Light -->
    <style name="AppTheme" parent="android:Theme.Holo.Light.DarkActionBar">
        <item name="android:textViewStyle">@style/MyTextViewStyle</item>
    </style>

    <!-- Style to use for ALL text views (including FontTextView) -->
    <!-- Use a different parent if you don't want Holo Light -->
    <style name="MyTextViewStyle" parent="@android:style/Widget.Holo.Light.TextView">
        <item name="android:textAppearance">@style/MyTextAppearance</item>
    </style>

    <!-- Text appearance to use for ALL text views (including FontTextView) -->
    <!-- Use a different parent if you don't want Holo Light -->
    <style name="MyTextAppearance" parent="@android:style/TextAppearance.Holo">
        <!-- Alternatively, reference this font with the name "aspergit" -->
        <!-- Note that only our own TextView's will use the font attribute -->
        <item name="flFont">someFont</item>
        <item name="android:textStyle">bold|italic</item>
    </style>

    <!-- Alternative style, maybe for some other widget -->
    <style name="StylishFont">
        <item name="flFont">anotherFont</item>
        <item name="android:textStyle">normal</item>
    </style>

</resources>

Bu amaç için özel olarak birkaç araç oluşturdum. GitHub'dan bu projeye bakın veya her şeyi açıklayan bu blog yayınına bakın .


13

Bunu yapmanın en iyi yolu Android O önizleme sürümünden şu şekilde: Yalnızca android studio-2.4 veya üzeri bir sürümünüz

varsa çalışır

  1. Res klasörünü sağ tıklayın ve Yeni> Android kaynak dizinine gidin . Yeni
    Kaynak Dizini penceresi görünür.
  2. Kaynak türü listesinde yazı tipini seçin ve Tamam'ı tıklatın.
  3. Yazı tipi klasöründe, yazı tipi dosyaları ekleyin aşağıda üretir hayranlarıyla klasör yapısı R.font.dancing_script, R.font.la_lave R.font.ba_ba.
  4. Düzenleyicide dosyanın fontlarını önizlemek için bir font dosyasına çift ​​tıklayın .

Sonra bir font ailesi oluşturmalıyız:

  1. Yazı tipi klasörünü sağ tıklayın ve Yeni> Yazı tipi kaynak dosyası'na gidin . Yeni Kaynak Dosyası penceresi görünür.
  2. Dosya Adı'nı girin ve Tamam'ı tıklatın . Yeni font kaynak XML'i editörde açılır.
  3. Her yazı tipi dosyasını, stilini ve ağırlık özelliğini yazı tipi etiketi öğesine ekleyin. Aşağıdaki XML, font kaynağı XML'sine fontla ilgili özniteliklerin eklenmesini gösterir:

Bir TextView'e yazı tipi ekleme:

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

Dokümantasyondan itibaren

Yazı Tipleriyle Çalışma

Tüm adımlar doğrudur.


4
ony api> 26 ((
maXp


Bu oldukça büyük bir 3. adımı kaçırıyor ... Bunu nasıl yapıyorsunuz?
Wig Wiget

12

Android Özel Fontlar için varlıklar klasör adı içinde bir klasör oluşturmak "fontlar" içine istediğiniz fonts.ttf veya .otf dosyasını yerleştirin.

UIBaseFragment'ı genişletirseniz:

Typeface font = Typeface.createFromAsset(getActivity().getAssets(), "fonts/Arial.ttf");
        tv.setTypeface(font);

Faaliyet genişletirse:

Typeface font = Typeface.createFromAsset(getContext().getAssets(), "fonts/Arial.ttf");
        tv.setTypeface(font);

7

PixlUI'yi https://github.com/neopixl/PixlUI adresinde kullanabilirsiniz.

.jar dosyasını içe aktarın ve XML'de kullanın

 <com.neopixl.pixlui.components.textview.TextView
    android:id="@+id/textView1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/hello_world"
    pixlui:typeface="GearedSlab.ttf" />

4

SO'da sunulan tüm çözümlerden memnun olmadığım için, benimkini buldum. Etiketleri ile küçük bir hile dayanır (yani kodunuzda etiketleri kullanamazsınız), yazı tipi yolunu oraya koydum. Dolayısıyla, görünümleri tanımlarken aşağıdakilerden birini yapabilirsiniz:

<TextView
        android:id="@+id/textViewHello1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World 1"
        android:tag="fonts/Oswald-Regular.ttf"/>

veya bu:

<TextView
        android:id="@+id/textViewHello2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World 2"
        style="@style/OswaldTextAppearance"/>

<style name="OswaldTextAppearance">
        <item name="android:tag">fonts/Oswald-Regular.ttf</item>
        <item name="android:textColor">#000000</item>
</style>

Artık görünüme açıkça şu şekilde erişebilir / ayarlayabilirsiniz:

TextView textView = TextViewHelper.setupTextView(this, R.id.textViewHello1).setText("blah");

veya her şeyi şu yolla kurun:

TextViewHelper.setupTextViews(this, (ViewGroup) findViewById(R.id.parentLayout)); // parentLayout is the root view group (relative layout in my case)

Ve sorduğun sihirli sınıf nedir? Çoğunlukla hem etkinlik hem de fragmanlar için yardımcı yöntemlerle başka bir SO postundan yapıştırılır:

import android.app.Activity;
import android.content.Context;
import android.graphics.Typeface;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;

import java.util.HashMap;
import java.util.Map;

public class TextViewHelper {
    private static final Map<String, Typeface> mFontCache = new HashMap<>();

    private static Typeface getTypeface(Context context, String fontPath) {
        Typeface typeface;
        if (mFontCache.containsKey(fontPath)) {
            typeface = mFontCache.get(fontPath);
        } else {
            typeface = Typeface.createFromAsset(context.getAssets(), fontPath);
            mFontCache.put(fontPath, typeface);
        }
        return typeface;
    }

    public static void setupTextViews(Context context, ViewGroup parent) {
        for (int i = parent.getChildCount() - 1; i >= 0; i--) {
            final View child = parent.getChildAt(i);
            if (child instanceof ViewGroup) {
                setupTextViews(context, (ViewGroup) child);
            } else {
                if (child != null) {
                    TextViewHelper.setupTextView(context, child);
                }
            }
        }
    }

    public static void setupTextView(Context context, View view) {
        if (view instanceof TextView) {
            if (view.getTag() != null) // also inherited from TextView's style
            {
                TextView textView = (TextView) view;
                String fontPath = (String) textView.getTag();
                Typeface typeface = getTypeface(context, fontPath);
                if (typeface != null) {
                    textView.setTypeface(typeface);
                }
            }
        }
    }

    public static TextView setupTextView(View rootView, int id) {
        TextView textView = (TextView) rootView.findViewById(id);
        setupTextView(rootView.getContext().getApplicationContext(), textView);
        return textView;
    }

    public static TextView setupTextView(Activity activity, int id) {
        TextView textView = (TextView) activity.findViewById(id);
        setupTextView(activity.getApplicationContext(), textView);
        return textView;
    }
}

4

Ne yazık ki bunun için iyi bir çözüm yok.

Özel bir TextView kullanma ile ilgili birçok makaleyi gördüm, ancak sadece yazı tiplerini uygulayabilen metin görünümleri değil ve geliştiriciye erişilemeyen diğer görünümlerde gizlenmiş metin görünümleri olduğunu unuttular; Spannable'ı kullanmaya bile başlamayacağım .

Aşağıdaki gibi harici bir yazı tipi yardımcı programı kullanabilirsiniz:

Hat Yazı Tipi Aracı

AMA Bu, uygulamadaki uygulamadaki her görünüm üzerinde döngü yapar ve bu yardımcı program bile bazı görünümleri özlüyor (ViewPager normal yazı tipi oluşturuyor), Google'ın oluşturma araçlarını güncellediği zaman, kullanımdan kaldırılmış mülkleri hedeflemesi gerektiğinden zaman zaman çökecek olan sorununuz var. Java'nın Yansımasını kullandığı için de biraz yavaş .

Bunu düzeltmek gerçekten Google'a kalmış. Android'de daha iyi yazı tipi desteğine ihtiyacımız var. İOS çözümüne bakarsanız, aralarından seçim yapabileceğiniz yerleşik 100 yazı tipi vardır. Özel bir yazı tipi ister misiniz? Sadece bir TFF bırakın ve kullanılabilir ..

Şimdilik, Google'ın bize sunduğu ve son derece sınırlı ancak neyse ki mobil cihazlar için optimize edilmiş tekliflerle sınırlıydı.


2

Super ve callContentView () çağrısından sonra yukarıdaki kodu onCreate () öğesine yapıştırdığınızdan emin olun . Bu küçük detay bir süreliğine asıldı.


2

Android 8.0 ile Uygulamada Özel Yazı Tiplerini kullanmak kolaylaştı downloadable fonts. Yazı tiplerini doğrudan res/font/ folderproje klasörüne ekleyebiliriz ve böylece yazı tipleri Android Studio'da otomatik olarak kullanılabilir hale gelir.

Folder Yazı tipi ve tipi Yazı Tipi olarak ayarlanmış res

Şimdi fontFamilyözelliği yazı tipi listesine ayarlayın veya daha fazlasını tıklayın ve istediğiniz yazı tipini seçin. Bu, TextView'ınıza satır ekleyecektir tools:fontFamily="@font/your_font_file".

Bu otomatik olarak birkaç dosya oluşturur.

1. Değerler klasöründe oluşturur fonts_certs.xml.

2. Manifest'te şu satırları ekler:

  <meta-data
            android:name="preloaded_fonts"
            android:resource="@array/preloaded_fonts" /> 

3. preloaded_fonts.xml

<resources>
    <array name="preloaded_fonts" translatable="false">
        <item>@font/open_sans_regular</item>
        <item>@font/open_sans_semibold</item>
    </array>
</resources>

2

Kolay ve basit kullanabilirsiniz EasyFonts adresinden Müşteri özel yazı tipleri kümesi çeşitli üçüncü taraf kitaplığı TextView. Bu kütüphaneyi kullanarak, varlıklar / fontlar klasörüne font indirip eklemek konusunda endişelenmenize gerek yoktur. Ayrıca Typeface nesnesi oluşturma hakkında.

Onun yerine

Typeface myTypeface = Typeface.createFromAsset(getAssets(), "fonts/myFont.ttf");
TextView myTextView = (TextView)findViewById(R.id.myTextView);
myTextView.setTypeface(myTypeface);

basitçe:

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

Bu kütüphane ayrıca aşağıdaki yazı tipi yüzünü de sağlar.

  • Roboto
  • Droid Serif
  • Droid Robot
  • özgürlük
  • Eğlenceli Yükseltici
  • Android Milleti
  • Yeşil Avokado
  • Tanıma

1

Aynı sorunu yaşadım, TTF ortaya çıkmadı. Yazı tipi dosyasını değiştirdim ve aynı kodla çalışıyor.


1

Yazı tipini ağdan yüklemek veya kolayca biçimlendirmek istiyorsanız, şunları kullanabilirsiniz:

https://github.com/shellum/fontView

Misal:

<!--Layout-->
<com.finalhack.fontview.FontView
        android:id="@+id/someFontIcon"
        android:layout_width="80dp"
        android:layout_height="80dp" />

//Java:
fontView.setupFont("http://blah.com/myfont.ttf", true, character, FontView.ImageType.CIRCLE);
fontView.addForegroundColor(Color.RED);
fontView.addBackgroundColor(Color.WHITE);

1

Peki, yedi yıl sonra kütüphaneler 26 ++ textViewkullanarak tüm uygulamayı veya kolayca istediğinizi değiştirebilirsiniz android.support.

Örneğin:

Yazı tipi paketi uygulamanızı / src / res / yazı tipini oluşturun ve yazı tipinizi içine taşıyın.

resim açıklamasını buraya girin

Ve uygulama temanıza bir yazı tipi olarak ekleyin

    <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
   . . . ...
    <item name="android:fontFamily">@font/demo</item>
</style>

textViewYalnızca ile kullanım için örnek :

<style name="fontTextView" parent="@android:style/Widget.TextView">
    <item name="android:fontFamily">monospace</item>
</style>

Ve ana temanıza ekleyin:

<item name="android:textViewStyle">@style/fontTextView</item>

Şu anda 8.1 API 4.1'e kadar çalıştı Jelly Bean Ve bu çok çeşitli.


1

Güncelleme yanıtı: Android 8.0 (API seviye 26) yeni bir özellik olan XML Yazı Tipleri'ni sunar. Android 4.1 (API seviye 16) ve sonraki sürümlerini çalıştıran cihazlarda XML'deki Yazı Tipleri özelliğini kullanın, Destek Kitaplığı 26'yı kullanın.

bu bağlantıya bak


Eski cevap

Yazı tiplerini özelleştirmenin iki yolu vardır:

!!! varlıklar / fontlar / iran_sans.ttf içindeki özel yazı tipim



Yol 1: Refrection Typeface.class ||| en iyi yol

Sınıfta FontsOverride.setDefaultFont () yöntemini çağırır Uygulamayı genişletir, Bu kod, Toasts fontları bile dahil olmak üzere tüm yazılım fontlarının değiştirilmesine neden olur

AppController.java

public class AppController extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        //Initial Font
        FontsOverride.setDefaultFont(getApplicationContext(), "MONOSPACE", "fonts/iran_sans.ttf");

    }
}

FontsOverride.java

public class FontsOverride {

    public static void setDefaultFont(Context context, String staticTypefaceFieldName, String fontAssetName) {
        final Typeface regular = Typeface.createFromAsset(context.getAssets(), fontAssetName);
        replaceFont(staticTypefaceFieldName, regular);
    }

    private static void replaceFont(String staticTypefaceFieldName, final Typeface newTypeface) {
        try {
            final Field staticField = Typeface.class.getDeclaredField(staticTypefaceFieldName);
            staticField.setAccessible(true);
            staticField.set(null, newTypeface);
        } catch (NoSuchFieldException e) {
            e.printStackTrace();
        } catch (IllegalAccessException e) {
            e.printStackTrace();
        }
    }
}



2. Yol: setTypeface kullanın

özel görünüm için yazı tipini değiştirmek için setTypeface () öğesini çağırmanız yeterlidir.

CTextView.java

public class CTextView extends TextView {

    public CTextView(Context context) {
        super(context);
        init(context,null);
    }

    public CTextView(Context context, @Nullable AttributeSet attrs) {
        super(context, attrs);
        init(context,attrs);
    }

    public CTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
        init(context,attrs);
    }

    @RequiresApi(api = Build.VERSION_CODES.LOLLIPOP)
    public CTextView(Context context, @Nullable AttributeSet attrs, int defStyleAttr, int defStyleRes) {
        super(context, attrs, defStyleAttr, defStyleRes);
        init(context,attrs);
    }

    public void init(Context context, @Nullable AttributeSet attrs) {

        if (isInEditMode())
            return;

        // use setTypeface for change font this view
        setTypeface(FontUtils.getTypeface("fonts/iran_sans.ttf"));

    }
}

FontUtils.java

public class FontUtils {

    private static Hashtable<String, Typeface> fontCache = new Hashtable<>();

    public static Typeface getTypeface(String fontName) {
        Typeface tf = fontCache.get(fontName);
        if (tf == null) {
            try {
                tf = Typeface.createFromAsset(AppController.getInstance().getApplicationContext().getAssets(), fontName);
            } catch (Exception e) {
                e.printStackTrace();
                return null;
            }
            fontCache.put(fontName, tf);
        }
        return tf;
    }

}



0
  • Projenizi açın ve sol üstteki Project'i seçin
  • app -> src -> ana
  • ana olarak sağ tıklayın ve varlık olarak dizin adı oluşturun
  • yeni dizin oluşturmak ve oluşturmak için sağ tıklayın yazı tipi
  • ücretsiz fontlar gibi ücretsiz fontlar bulmanız gerekir
  • bunu Textview'inize verin ve Activity sınıfınızda arayın
  • fontlarınızı fonts klasörüne kopyalayın
  • TextView txt = (TextView) findViewById(R.id.txt_act_spalsh_welcome); Typeface font = Typeface.createFromAsset(getAssets(), "fonts/Aramis Italic.ttf"); txt.setTypeface(font);

yazı tipinin adı doğru olmalı ve eğlenmelidir


0

Evet, indirilebilir yazı tipleri Dipali gibi söylediği .

İşte böyle yapıyorsun ...

  1. Bir yer TextView .
  2. Özellikler bölmesinde fontFamilyaçılır menüyü seçin. Orada yoksa, düzeltme işaretini bulun (> ve genişletmek için üzerine tıklayın)textAppearance .
  3. Genişletin font-familyAçılır menüyü .
  4. Küçük listede, görene kadar tamamen aşağı kaydırın more fonts
  5. Bu, arama yapabileceğiniz bir iletişim kutusu açar Google Fonts
  6. Üst taraftaki arama çubuğu ile istediğiniz yazı tipini arayın
  7. Yazı tipinizi seçin.
  8. Beğendiğiniz yazı tipinin stilini seçin (örn. Kalın, normal, italik, vb.)
  9. Sağ bölmede, şu yazan radyo düğmesini seçin: Add font to project
  10. Tamam'ı tıklayın. Artık TextView'ınızda beğendiğiniz yazı tipi var!

BONUS: Uygulamanızdaki metinle HER ŞEYİ seçilen yazı tipiyle biçimlendirmek isterseniz <item name="android:fontfamily">@font/fontnamehere</item>,styles.xml


cevabımı takdir etmelisin! :)
Dipali s.
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.