Nilai yang Valid untuk android:fontFamily dan apa yang mereka peta untuk?

Dalam jawaban pertanyaan pengguna daftar nilai untuk android:fontFamily dan 12 varian (lihat di bawah). Di mana nilai-nilai ini berasal? Dokumentasi untuk android:fontFamily tidak mencantumkan informasi ini di setiap tempat (saya diperiksa di sini, dan di sini). String yang tercantum di Android styles.xml file di berbagai tempat, tapi bagaimana ini peta kembali ke Roboto font?

Dari android 4.1 / 4.2, berikut Roboto font keluarga tersedia:

android:fontFamily="sans-serif" // roboto regular android:fontFamily="sans-serif-cahaya" // roboto cahaya android:fontFamily="sans-serif condensed" // roboto condensed android:fontFamily="sans-serif-tipis" // roboto tipis (android 4.2) android:fontFamily="sans-serif-menengah" // roboto medium (android 5.0)

dalam kombinasi dengan ini

android:textStyle="normal|bold|italic"

12 varian yang mungkin:

  • Regular
  • Italic
  • Berani
  • Bold-italic
  • Cahaya
  • Cahaya-italic
  • Tipis
  • Tipis-italic
  • Kental reguler
  • Kental italic
  • Condensed bold
  • Condensed bold-italic

Dalam styles.xml file dalam aplikasi I'm bekerja pada seseorang yang terdaftar sebagai keluarga font, dan I'm cukup yakin itu's salah:

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

I'd untuk mendapatkan tema untuk aplikasi kami atur dengan benar (termasuk menggunakan fontFamily dengan benar) dan menghapus semua redundansi yang dalam beberapa gaya yang dibuat sebelum saya telah melihat file.

Larutan

di Mana nilai-nilai ini berasal? Dokumentasi untuk android:fontFamily tidak mencantumkan informasi ini di setiap tempat

Ini memang tidak tercantum dalam dokumentasi. Tapi mereka disebutkan di sini di bawah bagian 'Font keluarga'. Daftar dokumen baru setiap API publik untuk Android Jelly Bean 4.1.

Di styles.xml file dalam aplikasi I'm bekerja pada seseorang yang terdaftar sebagai keluarga font, dan I'm cukup yakin itu's salah:

Ya, itu's salah. Anda don't referensi file font, anda harus menggunakan jenis huruf nama yang disebutkan dalam dokumen terkait di atas. Dalam hal ini seharusnya ini:

sans-serif

Seperti terkait jawaban sudah menyatakan, 12 varian yang mungkin:

Ditambahkan dalam Android Jelly Bean (4.1) - API 16 :

Reguler (default):

sans-serif
normal 

Italic:

sans-serif
italic

Tebal:

sans-serif
bold

Bold-italic:

sans-serif
bold|italic

Cahaya:

sans-serif-light
normal

Cahaya-italic:

sans-serif-light
italic

Tipis :

sans-serif-thin
normal

Tipis-italic :

sans-serif-thin
italic

Kental reguler:

sans-serif-condensed
normal

Kental italic:

sans-serif-condensed
italic

Condensed bold:

sans-serif-condensed
bold

Condensed bold-italic:

sans-serif-condensed
bold|italic

Ditambahkan dalam Android Lollipop (v5.0) - API 21 :

Sedang:

sans-serif-medium
normal

Medium italic:

sans-serif-medium
italic

Hitam:

sans-serif-black
italic

Untuk referensi cepat, ini adalah bagaimana mereka semua terlihat seperti:

Komentar (25)

Font yang tersedia (seperti Oreo)

The Material Desain Tipografi halaman demo untuk beberapa font ini dan saran-saran dalam memilih font dan gaya.

Untuk kode detektif: fonts.xml adalah definitif dan terus memperluas daftar Android font.


Menggunakan font ini

Mengatur android:fontFamily dan android:textStyle atribut, misalnya


untuk nilai-nilai yang diinginkan dari tabel ini:

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 font fallback; anda dapat't menentukan secara langsung)

Note: tabel ini berasal dari fonts.xml. Masing-masing jenis huruf's nama keluarga dan gaya tercantum dalam fonts.xml, misalnya


    CutiveMono.ttf

serif-monospace dengan demikian adalah font keluarga, dan normal adalah gaya.


Kompatibilitas

Berdasarkan log fonts.xml dan mantan system_fonts.xml, yang dapat anda lihat ketika setiap huruf telah ditambahkan:

  • Ice Cream Sandwich: Roboto regular, bold, italic, dan bold italic
  • Jelly Bean: Roboto cahaya, italic, kental, kental, tebal, kental italic, dan condensed bold italic
  • Jelly Bean MR1: Roboto tipis dan tipis italic
  • Lollipop:
  • Roboto medium, medium italic, hitam, hitam dan italic
  • Noto Serif regular, bold, italic, bold italic
  • Cutive Mono
  • Coming Soon
  • Menari Script
  • Carrois Gothic SC
  • Noto Sans
  • Oreo MR1: Roboto condensed menengah
Komentar (4)

Sejauh yang saya'm sadar, anda bisa't menyatakan font kustom dalam xml atau tema. Saya biasanya hanya membuat kustom kelas memperpanjang textview yang mengatur sendiri jenis huruf pada instansiasi dan menggunakan mereka dalam tata letak file xml.

yaitu:

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

dan

Komentar (1)