Android için geçerli değerler: fontFamily ve neyle eşleşiyorlar?


266

Cevap olarak bu soruya kullanıcı listeleri değerleri android:fontFamilyve 12 varyantları (aşağıya bakınız). Bu değerler nereden geliyor? Belgelerinde android:fontFamilybu bilgiler hiçbir yerde listelenmiyor ( burada ve burada kontrol ettim ). Dizeler çeşitli yerlerde Android styles.xml dosyasında listelenir , ancak bunlar Roboto yazı tipiyle nasıl eşlenir ?

Android 4.1 / 4.2 sürümünden, aşağıdaki Roboto font aileleri mevcuttur:

android:fontFamily="sans-serif"           // roboto regular  
android:fontFamily="sans-serif-light"     // roboto light  
android:fontFamily="sans-serif-condensed" // roboto condensed  
android:fontFamily="sans-serif-thin"      // roboto thin (android 4.2)  
android:fontFamily="sans-serif-medium"    // roboto medium (android 5.0)

bununla kombinasyon halinde

android:textStyle="normal|bold|italic" 

12 çeşit mümkündür:

  • Düzenli
  • İtalik
  • cesur
  • Kalın italik
  • ışık
  • Işık italik
  • İnce
  • İnce italik
  • Yoğun düzenli
  • Yoğun italik
  • Yoğun kalın
  • Yoğun kalın italik

Uygulamadaki styles.xmldosyada bunu yazı tipi ailesi olarak listeleyen biri üzerinde çalışıyorum ve bunun yanlış olduğundan eminim:

<item name="android:fontFamily">Roboto-Regular.ttf</item>

Uygulamamızın temasını doğru bir şekilde ayarlamak (fontFamily'in doğru şekilde kullanılmasını içerir) ve dosyaya bir göz atmadan önce oluşturulan stillerin bazılarında olan tüm artıklığı kaldırmak istiyorum.

Yanıtlar:


346

Bu değerler nereden geliyor? Android için belgeler: fontFamily bu bilgiyi hiçbir yerde listelemiyor

Bunlar aslında belgelerde listelenmemiştir. Ancak burada 'Yazı tipi aileleri' bölümünde bahsedilmiştir . Belgede Android Jelly Bean 4.1 için her yeni herkese açık API listeleniyor.

Uygulamadaki styles.xml dosyasında bu yazı tipi ailesi olarak listelenen biri üzerinde çalışıyorum ve bunun yanlış olduğundan eminim:

Evet, bu yanlış. Yazı tipi dosyasına başvurmazsınız, yukarıdaki bağlantılı belgede belirtilen yazı tipi adını kullanmanız gerekir. Bu durumda şöyle olmalıydı:

<item name="android:fontFamily">sans-serif</item>

Daha önce belirtilen bağlantılı cevap gibi, 12 varyant mümkündür:

Android Jelly Bean (4.1) - API 16'da eklendi:

Normal (varsayılan):

<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">normal</item> 

İtalik :

<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">italic</item>

Kalın :

<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">bold</item>

Kalın italik :

<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">bold|italic</item>

Işık :

<item name="android:fontFamily">sans-serif-light</item>
<item name="android:textStyle">normal</item>

Hafif italik :

<item name="android:fontFamily">sans-serif-light</item>
<item name="android:textStyle">italic</item>

İnce :

<item name="android:fontFamily">sans-serif-thin</item>
<item name="android:textStyle">normal</item>

İnce italik :

<item name="android:fontFamily">sans-serif-thin</item>
<item name="android:textStyle">italic</item>

Yoğun düzenli :

<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">normal</item>

Yoğun italik :

<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">italic</item>

Yoğun kalın :

<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">bold</item>

Yoğun kalın italik :

<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">bold|italic</item>

Android Lollipop (v5.0) - API 21'de eklendi:

Orta :

<item name="android:fontFamily">sans-serif-medium</item>
<item name="android:textStyle">normal</item>

Orta italik :

<item name="android:fontFamily">sans-serif-medium</item>
<item name="android:textStyle">italic</item>

Siyah :

<item name="android:fontFamily">sans-serif-black</item>
<item name="android:textStyle">italic</item>

Hızlı başvuru için, hepsi şöyle görünür:


2
Haha: DI aslında bundan önce siteyi biliyordu, bu yüzden bulmak zor değildi. Ama ileride referans olması için: Sana vb yalnızca API yıllardan, blog yayınları, sürüm notları arama sınırlayabilirsiniz beri, google arama üzerinden developer.android.com üzerinde arama kullanmayı tercih
Ahmed

8
Ve eğer ilgilendi: Bu yazı tanımlanır yerdir. Bu sınıf yazı tiplerini yükler ve bu da onları şaşkına çevirir.
Ahmad

1
@androiddeveloper yapıldı. Roboto siyahı yazı tipinin rengini ifade etmez, ancak Roboto Bold'un sadece "daha cesur" bir versiyonudur. En alta bir referans resim ekledim.
Ahmad

1
@Ahmad Bunu açıkladığınız için teşekkürler. İşte + 1'iniz ... :)
android geliştirici

2
Ayrıca, fontFamily ile kullanılacak çok sayıda takma ad android.googlesource.com/platform/frameworks/base/+/master/data/…
Pauland

110

Kullanılabilir yazı tipleri (Oreo'dan itibaren)

Tüm yazı tiplerinin önizlemesi

Materyal Tasarımı Tipografi sayfa yazı tipleri ve stilleri seçme konusunda bu yazı tipleri ve önerilerden bazıları için demolar var.

Kod sleuths için: fonts.xmlAndroid yazı tiplerinin kesin ve sürekli genişleyen listesidir.


Bu yazı tiplerini kullanma

android:fontFamilyVe android:textStyleniteliklerini ayarlayın , ör.

<!-- Roboto Bold -->
<TextView
    android:fontFamily="sans-serif"
    android:textStyle="bold" />

bu tablodan istenen değerlere:

Font                     | android:fontFamily          | android:textStyle
-------------------------|-----------------------------|-------------------
Roboto Thin              | sans-serif-thin             |
Roboto Light             | sans-serif-light            |
Roboto Regular           | sans-serif                  |
Roboto Bold              | sans-serif                  | bold
Roboto Medium            | sans-serif-medium           |
Roboto Black             | sans-serif-black            |
Roboto Condensed Light   | sans-serif-condensed-light  |
Roboto Condensed Regular | sans-serif-condensed        |
Roboto Condensed Medium  | sans-serif-condensed-medium |
Roboto Condensed Bold    | sans-serif-condensed        | bold
Noto Serif               | serif                       |
Noto Serif Bold          | serif                       | bold
Droid Sans Mono          | monospace                   |
Cutive Mono              | serif-monospace             |
Coming Soon              | casual                      |
Dancing Script           | cursive                     |
Dancing Script Bold      | cursive                     | bold
Carrois Gothic SC        | sans-serif-smallcaps        |

(Noto Sans yedek bir yazı tipidir; doğrudan belirtemezsiniz)

Not: bu tablodan türetilmiştir fonts.xml. Her yazı tipinin aile adı ve stili, fonts.xml dosyasında listelenir, örn.

<family name="serif-monospace">
    <font weight="400" style="normal">CutiveMono.ttf</font>
</family>

serif-monospaceböylece yazı tipi ailesi ve normalstil.


uygunluk

Fonts.xml ve eski system_fonts.xml günlüklerine dayanarak, her bir fontun ne zaman eklendiğini görebilirsiniz:

  • Ice Cream Sandwich: Roboto düzenli, kalın, italik ve kalın italik
  • Jelly Bean: Roboto hafif, hafif italik, yoğun, yoğun kalın, yoğun italik ve yoğun koyu italik
  • Jelly Bean MR1: Roboto ince ve ince italik
  • Lolipop:
    • Roboto orta, orta italik, siyah ve siyah italik
    • Noto Serif normal, kalın, italik, kalın italik
    • Cutive Mono
    • Çok yakında
    • Dans Eden Senaryo
    • Carrois Gotik SC
    • Noto Sans
  • Oreo MR1: Roboto yoğunlaşmış ortam

1
Android sürümü hakkındaki günlükte nasıl buldunuz?
android geliştirici

3
@androiddeveloper Her satırın eklendiği tarihlere bakıyordum. Belirli bir sürümde hangi yazı tiplerinin bulunduğunu tam olarak bilmek için, o sürüm için system_fonts.xml dosyasına bakın, örneğin Lollipop için: android.googlesource.com/platform/frameworks/base/+/…
Newtonx 5:15

Bu konuda tek ve tek yakınma, alfabetik olmayan: p Ama yine de! Bu en iyi cevap olmalı! Teşekkür ederim!
T.Woody

9

Bildiğim kadarıyla, xml veya temalarda özel yazı tipleri bildiremezsiniz. Genellikle sadece kendi fontlarını örnekleme üzerinde ayarlayan ve mizanpaj xml dosyalarımdaki metin görünümünü genişleten özel sınıflar yaparım.

yani:

public class Museo500TextView extends TextView {
    public Museo500TextView(Context context, AttributeSet attrs) {
        super(context, attrs);      
        this.setTypeface(Typeface.createFromAsset(context.getAssets(), "path/to/font.ttf"));
    }
}

ve

<my.package.views.Museo900TextView
        android:id="@+id/dialog_error_text_header"
        android:layout_width="190dp"
        android:layout_height="wrap_content"
        android:gravity="center_horizontal"
        android:textSize="12sp" />

1
Bu, bir geri dönüşüm görünümünde size çok fazla hafızaya mal olabilir
Florescu Cătălin
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.