Android Studio'da yazılmış bir projede özel yazı tipi nasıl kullanılır


Yanıtlar:


344

2020 Güncellemesi:

Res klasörü içinde font adlı bir klasör oluşturun ve yazı tipinizi kopyalayın

resim açıklamasını buraya girin

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

Programlı kullanım için:

textView.setTypeface(ResourcesCompat.getFont(context, R.font.abc_font))

10
Varlıklardan özel yazı tipleri yükleyen herkes, Android 5.0'da bazı yazı tiplerinin yüklenemediği bir hata olduğunu not etmelidir. Bu sorun Android 5.1'de giderilmiş olsa da, 5.0'ı desteklemek için bir geçici çözüm ttf yazı tiplerini yeniden yazmaktır. Daha fazla bilgi için bu konuya bakın stackoverflow.com/questions/27269264/…
BrentM

İkinci seçenek benim için mükemmel çalıştı. Bunun için teşekkürler!
Emzor

2
dizini bulmak için this.getContext (). getApplicationContext (). getAssets () kullanılır (android studio 2.1)
kuzdu

1
@kuthue onCreate () iyi. Kullanıcı uygulamayı kullanırken yazı tipini değiştirmek isterseniz, yazı tipini değiştirmek istediğiniz yere koyabilirsiniz. Bu düğmeler için de çalışır
rockhammer

1
Tüm proje için varsayılan yazı tipinin eklediğim özel yazı tipi olacağını nasıl ayarlayabilirim? İlk kod örneği böyle mi yapıyor?
Yonatan Nir

98

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

  1. Dosya> Yeni> Klasör> Varlıklar Klasörü'nü seçin

  2. Tıkla bitir

  3. Varlıkları sağ tıklayın ve fontlar adlı bir klasör oluşturun

  4. Yazı tipi dosyanızı varlıklara > yazı tiplerine yerleştirin

  5. TextView'in yazı tipini değiştirmek için aşağıdaki kodu kullanın

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

12
xml'de nasıl kullanılır?
Suisse

4
Bu eğitim bir XML'de nasıl kullanılacağını verir: stacktips.com/tutorials/android/…
Dinesh

@Suisse Destekleme Kütüphanesi 26 API sürümlerini 14 ve üstünü çalıştıran cihazlarda bu özellik tam destek sağlayan bağlantıyı
Ehsan.R

66

Alanda özel yazı tipi ailesi ayarlamanın birçok yolu vardır ve aşağıdaki gibi kullanıyorum.

Yazı tiplerini kaynak olarak eklemek için Android Studio'da aşağıdaki adımları uygulayın:

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.

Not: Kaynak dizinin adı yazı tipi olmalıdır.

3) Yazı tipi dosyalarınızı yazı tipi klasörüne ekleyin. resim açıklamasını buraya girin

Xml dosyanızda istediğiniz görünüme yazı tipi ekleyin:

resim açıklamasını buraya girin

Not: Ancak bunun için aşağıdaki şeyleri istediniz:

  1. Android Studio 3.0 ve üzeri kanarya.

  2. Etkinliğiniz AppCompatActivity'yi genişletir.

  3. Gradle dosyanızı şu şekilde güncelleyin:

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

buildtoolsVersion26'dan fazla ve minimum targetSdkVersiongerekli 26

  1. Build.gradle dosyasına bağımlılıklar ekleyin:
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

Sanırım .ttf dosyasını indirmek yerine Google yazı tiplerini kullanabiliriz. Uygulaması çok kolaydır. bu adımları izlemeniz yeterlidir. adım 1) Projenizin layout.xml dosyasını ve niteliklerde metin görünümü seçme yazı tipi ailesini açın (referans ekran görüntüsü için ekli) resim açıklamasını buraya girin

Adım 2) Yazı tipi ailesinde, yazı tipiniz yoksa Diğer yazı tipleri .. seçeneğini belirleyin. yeni bir pencere açılacağını göreceksiniz, orada gerekli yazı tipinizi yazabilir ve bu listeden istediğiniz yazı tipini seçebilirsiniz.) Aşağıdaki resimde gösterildiği gibi Normal, Kalın, İtalik vb. resim açıklamasını buraya girin

adim 3) Sonra seçtiğiniz yazı tipi xml dosyasına sahip bir yazı tipi klasörünün / res klasöründe otomatik olarak oluşturulacağını göreceksiniz.

resim açıklamasını buraya girin

Ardından bu font ailesini doğrudan xml biçiminde kullanabilirsiniz.

      android:fontFamily="@font/josefin_sans_bold"

veya pro grammtively bunu kullanarak elde edebilirsiniz

  Typeface typeface = ResourcesCompat.getFont(this, R.font.app_font);
  fontText.setTypeface(typeface);

Bu sorunun cevabı değil. Her yazı tipi Google Yazı Tiplerinde mevcut değildir.
Matt Fletcher

2
Güzel cevap! Yazı tipinizi listede bulamıyorsanız - varlıklar klasörüne yükleyin veya xml
Edgar Khimich

21

Merhaba burada Android'de EditTexts ve TextViews üzerine yazı tiplerini bir kerede uygulamak ve tüm projeye uygulamak için daha iyi bir yolumuz var.

Her şeyden önce yazı tipleri klasörü yapmanız gerekir. İşte Adımlar.

1: (proje klasörüne) gidin ve ardından uygulama> src> main

2: Ana klasöre 'varlıklar / yazı tipleri' adlı klasörler oluşturun.

3: Yazı tiplerinizi fontlar klasörüne yerleştirin. Burada 'MavenPro-Regular.ttf' var

EditText'e özel font uygulama adımları ve bu yaklaşımı kullanarak her girişe font uygulayabilirsiniz.

1: Bir Sınıf MyEditText oluşturun (tercih ettiğiniz ad ...)

2: EditText'i genişleten

3: Yazı tipinizi uygulayın

İşte kod örneği;

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

}

Ve İşte kodu nasıl kullanılacağı.

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

editText.setText("Hello");

Veya xml Dosyanızda

   <MyEditText
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="center"
    android:textColor="#fff"
    android:textSize="16dp"
    android:id="@+id/editText"
    />

Bu sınıf bana çalışma zamanında bu hatayı verdi: Sınıfı şişirirken hata oluştu MyEditText
GMX

Bu Bağlantıya bakın, Hatanın nasıl çözüleceğine dair bazı ipuçları bulabilirsiniz.
Mohammad Naim Dahee


Mevcut yapı ile, bu "AppCompatEditText genişletir" için değiştirmek gerektiğini düşünüyorum.
Dizel


9

Android-O ve Android Studio 2.4 için cevabımı eklemek istiyorum

  1. Res klasörü altında font adında bir klasör oluşturun. Proje örneğinize eklemek istediğiniz çeşitli yazı tiplerini indirin Google yazı tipleri

  2. Xml kullanıcı font ailenizin içinde

    misal :

    <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. programlı bir şekilde olmasını istiyorsanız aşağıdaki kodu kullanın

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

daha fazla bilgi için blog yazımın bağlantısını takip edin Android Studio 2.4 ile Android için yazı tipi stilleri


6
Kendi ürününüzü / blogunuzu tanıtmak istiyorsanız , bağlılığınızı ifşa etmeniz gerektiğini lütfen unutmayın ; aksi takdirde yanıtınız spam olarak işaretlenebilir. Lütfen nasıl spam gönderilmez
DavidPostill

Evet @PetterFriberg
Suresh Maidaragi

8

Android O'da bulunan yeni özelliklere göre, XML'deki yazı tipi kaynakları yeni özellik olarak kullanılabilir.

Yazı tiplerini kaynak olarak eklemek için Android Studio'da aşağıdaki adımları uygulayın:

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.

Not: Kaynak dizinin adı yazı tipi olmalıdır.

3) Yazı tipi dosyalarınızı yazı tipi klasörüne ekleyin.

Font kaynaklarına, yeni bir kaynak türü olan font yardımıyla erişebilirsiniz. Örneğin, bir yazı tipi kaynağına erişmek için @ font / myfont veya R.font.myfont kullanın.

Örneğin. Typeface typeface = getResources().getFont(R.font.myfont); textView.setTypeface(typeface);


2
ResourcesCompat.getFont olmalıdır (içerik, R.font.your_font)
Trung Le

7

Kolay ve basit EasyFonts üçüncü taraf kütüphanesini kullanarak çeşitli özel yazı tiplerini ayarlayabilirsiniz TextView. Bu kitaplığı kullanarak, varlıklar / yazı tipleri klasörüne yazı tipi indirme ve ekleme konusunda endişelenmeniz gerekmez. Ayrıca Typeface nesnesi oluşturma hakkında. Varlık klasörü oluşturmakta özgür olacaksınız.

basitçe:

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

Bu kütüphane tarafından sağlanan birçok yazı tipi vardır.


6

1. font Klasörüne font.ttf dosyası ekleyin. Sonra bu satırı onCreate yöntemine ekleyin

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

Ve işte benim 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. Project -> app (veya uygulama adınız) -> src -> main -> sağ tıklayın -> Yeni -> Dizin'de klasör varlıkları oluşturun.
  2. Ardından "fonts" adlı varlıkların içinde yeni bir dizin oluşturun.

Yazı tipini textView öğesine atamak için:

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

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

yazıtipi_adı yazı tipi uzantısı içeriyor.


3

Benim gibi Android için çok yeniyseniz, bu biraz zor olabilir. Telefon ettiğinizden emin olun:

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

gibi bir yöntem içinde onCreate.


3

Android 8.0 (API 26) fontlarla ilgili yeni özellikler tanıttı.

1) Yazı tipleri kaynak olarak kullanılabilir.

2) İndirilebilir yazı tipleri.

Android uygulamanızda harici yazı tipleri kullanmak istiyorsanız, ya yazı tipi dosyalarını apk olarak ekleyebilir ya da indirilebilir yazı tiplerini yapılandırabilirsiniz.

Font dosyalarını APK'ye dahil etme: Font dosyalarını indirebilir, res / font filer'e kaydedebilir, font ailesini tanımlayabilir ve stillerde font ailesini kullanabilirsiniz.

Özel yazı tiplerini kaynak olarak kullanma hakkında daha fazla bilgi için bkz. Http://www.zoftino.com/android-using-custom-fonts

İndirilebilir yazı tiplerini yapılandırma : Yazı tipi sağlayıcısı ayrıntılarını sağlayarak yazı tipini tanımlayın, yazı tipi sağlayıcı sertifikası ekleyin ve stillerde yazı tipi kullanın.

İndirilebilir yazı tipleri hakkında daha fazla bilgi için bkz. Http://www.zoftino.com/downloading-fonts-android



1
Ayrıca, Özel / İndirilebilir yazı tipleri Android O (8.0) 'da tanıtıldığından, geriye dönük uyumluluk olmadığı anlamına gelmez. Lütfen Özel Yazı Tiplerinin nasıl uygulanacağına ilişkin resmi belgelere bakın. Android Studio 3.0'ın da yüklü olması gerektiğini lütfen unutmayın.
anthonymonori

1

Önce assetsklasör oluşturun, sonra klasör oluşturun fonts.

Sonra ayarlayabilirsiniz fontgelen assetsveya directorybağırma gibi:

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

Şimdi yazı tipi uygulamak için en kolay yollarından biri böyle birçok yolu vardır, 1) res klasörü sağ tıklayın Yeni> Android kaynak dizinine gidin.

2) Kaynak türü listesinden yazı tipini seçin ve Tamam'ı tıklatın.

3) Yazı tipi dosyalarınızı yazı tipi klasörüne koyun.


1

Fontlarınızı app / src / main / asset içindeki öğeler klasörüne ekleyin, şöyle özel bir metin görünümü oluşturun:

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

}

FontCache'i ekleyin: Böylece, yazı tipini tekrar tekrar oluşturmak zorunda kalmazsınız:

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

}

Ve işiniz bitti!

Android O'dan doğrudan yazı tipleri ekleyebilirsiniz.


1

font klasörünü font klasörüne koyun ve fontfamily uygulayın: '' fontlarınız


-1

Yeni okuyucular için

Bu kütüphaneyi Gloxey Özel Yazı Tipi Görünümlerini kullanabilirsiniz

dereceye bağımlılık

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

Nasıl kullanılır?

Klasör varlıkları oluşturma -> yazı tipleri . Yazı tiplerinizi yazı tipleri klasörüne kopyalayın.

Görünüme yazı tipi uygulamak için özellik app: font_name = "font_name_string" kullanın.

Misal

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