Bu soruya]1 verilen yanıtta kullanıcı android:fontFamily
ve 12 varyant için değerler listelemektedir (aşağıya bakınız). Bu değerler nereden geliyor? android:fontFamily` dokümantasyonu bu bilgiyi hiçbir yerde listelemiyor (burada ve burada kontrol ettim). Dizeler Android styles.xml dosyasında çeşitli yerlerde listeleniyor, ancak bunlar Roboto yazı tipiyle nasıl eşleşiyor?
Android 4.1 / 4.2'den itibaren aşağıdaki Roboto yazı tipi aileleri mevcut:
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 birlikte
android:textStyle="normal|bold|italic"
12 varyant mümkündür:
- Normal
- İtalik
- Kalın
- Bold-italik
- Işık
- Açık italik
- İnce
- İnce italik
- Yoğunlaştırılmış normal
- Yoğunlaştırılmış italik
- Yoğunlaştırılmış kalın
- Yoğunlaştırılmış kalın-italik
Üzerinde çalıştığım uygulamadaki styles.xml
dosyasında birisi bunu font ailesi olarak listelemiş ve bunun yanlış olduğundan oldukça eminim:
<item name="android:fontFamily">Roboto-Regular.ttf</item>
Uygulamamız için temayı doğru bir şekilde ayarlamak (fontFamily'yi doğru bir şekilde kullanmayı da içerir) ve dosyaya bakmadan önce oluşturulan bazı stillerdeki tüm fazlalıkları kaldırmak istiyorum.
Bu değerler nereden geliyor? android:fontFamily için dokümantasyon bu bilgiyi herhangi bir yerde listelemiyor
Bunlar gerçekten de belgelerde listelenmemiştir. Ancak 'Yazı tipi aileleri' bölümü altında burada bahsedilmektedir. Belge, Android Jelly Bean 4.1 için her yeni genel API'yi listeler.
Üzerinde çalıştığım uygulamadaki styles.xml dosyasında birisi bunu font ailesi olarak listelemiş ve bunun yanlış olduğundan oldukça eminim:
Evet, bu yanlış. Yazı tipi dosyasını referans almazsınız, yukarıdaki bağlantılı belgede belirtilen yazı tipi adını kullanmanız gerekir. Bu durumda bu olmalıydı:
<item name="android:fontFamily">sans-serif</item>
Bağlantılı cevapta da belirtildiği gibi, 12 varyant mümkündür:
Normal (varsayılan):
<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">normal</item>
İtalyanca:
<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">italic</item>
Bold:
<item name="android:fontFamily">sans-serif</item>
<item name="android:textStyle">bold</item>
Bold-italic:
<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>
Light-italic:
<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ğunlaştırılmış normal:
<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">normal</item>
Kondense italik:
<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">italic</item>
Koyulaştırılmış kalın:
<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">bold</item>
Yoğunlaştırılmış kalın italik:
<item name="android:fontFamily">sans-serif-condensed</item>
<item name="android:textStyle">bold|italic</item>
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ı referans için, hepsi bu şekilde görünüyor:
Material Design Typography]2 sayfasında bu fontlardan bazılarının demoları ve font ve stil seçimine ilişkin öneriler yer alıyor.
Kod hafiyeleri için: fonts.xml
Android yazı tiplerinin kesin ve sürekli genişleyen listesidir.
Örneğin android:fontFamily
ve android:textStyle
niteliklerini ayarlayın.
<!-- Roboto Bold -->
<TextView
android:fontFamily="sans-serif"
android:textStyle="bold" />
bu tablodan istenen değerlere ayarlayın:
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 bir yedek yazı tipidir; bunu doğrudan belirtemezsiniz)
Not:_ Bu tablo fonts.xml
'den türetilmiştir. Her yazı tipinin aile adı ve stili fonts.xml'de listelenir, örn.
<family name="serif-monospace">
<font weight="400" style="normal">CutiveMono.ttf</font>
</family>
serif-monospace
böylece yazı tipi ailesidir ve normal
stildir.
fonts.xml dosyasının log ve eski system_fonts.xml dosyasına dayanarak, her bir yazı tipinin ne zaman eklendiğini görebilirsiniz:
Bildiğim kadarıyla, xml veya temalarda özel yazı tipleri bildiremezsiniz. Ben genellikle textview'i genişleten ve örnekleme sırasında kendi yazı tiplerini ayarlayan özel sınıflar oluşturuyorum ve bunları düzen xml dosyalarımda kullanıyorum.
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" />