Jadi saya ingin mengubah android:fontFamily
di Android tapi saya tidak melihat font yang sudah ditentukan sebelumnya di Android. Bagaimana cara memilih salah satu yang sudah ditentukan sebelumnya? Saya tidak benar-benar perlu mendefinisikan TypeFace saya sendiri tetapi semua yang saya butuhkan adalah sesuatu yang berbeda dari apa yang ditunjukkannya saat ini.
<TextView
android:id="@+id/HeaderText"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="52dp"
android:gravity="center"
android:text="CallerBlocker"
android:textSize="40dp"
android:fontFamily="Arial"
/>
Sepertinya apa yang saya lakukan di sana tidak akan benar-benar bekerja! BTW android:fontFamily="Arial"
adalah upaya bodoh!
Jawaban:
Dari android 4.1 / 4.2 / 5.0, keluarga font Roboto berikut tersedia:
dalam kombinasi dengan
16 varian ini dimungkinkan:
fonts.xml
sumber
android:fontFamily="sans-serif-black-small-caps"
tidak berfungsi. Apakah ada yang tahu?android:fontFamily
di TextView.Ini adalah cara untuk mengatur font secara terprogram:
letakkan file font di folder aset Anda. Dalam kasus saya, saya membuat subdirektori yang disebut font.
EDIT: Jika Anda bertanya-tanya di mana folder aset Anda melihat pertanyaan ini
sumber
Mulai dari Android-Studio 3.0 sangat mudah untuk mengubah keluarga font
Menggunakan perpustakaan dukungan 26, ini akan berfungsi pada perangkat yang menjalankan Android API versi 16 dan lebih tinggi
Buat folder di
font
bawahres
direktori .Download font yang Anda inginkan dan rekatkan di dalamfont
folder. Strukturnya harus seperti di bawah iniCatatan: Pada Android Support Library 26.0, Anda harus mendeklarasikan kedua set atribut (android: dan aplikasi:) untuk memastikan font Anda dimuat di perangkat yang menjalankan Api 26 atau lebih rendah.
Sekarang Anda dapat mengubah font dalam tata letak menggunakan
Untuk mengubah secara Programatis
Untuk mengubah font menggunakan styles.xml buat gaya
dan terapkan gaya ini ke
TextView
Anda juga dapat membuat keluarga font Anda sendiri
- Klik kanan folder font dan pergi ke New> File sumber daya font . Jendela File Sumber Daya Baru muncul.
- Masukkan nama file , lalu klik OK . Sumber daya font baru XML terbuka di editor.
Tulis keluarga font Anda sendiri di sini, misalnya
ini hanyalah pemetaan dari fontStyle dan fontWeight tertentu ke sumber daya font yang akan digunakan untuk membuat varian tertentu. Nilai yang valid untuk fontStyle adalah normal atau miring; dan fontWeight sesuai dengan spesifikasi font-weight CSS
1. Untuk mengubah fontfamily dalam tata letak yang dapat Anda tulis
2. Untuk Mengubah Secara Programatis
Untuk mengubah font seluruh Aplikasi Tambahkan dua baris ini di AppTheme
Lihat Dokumentasi , Tutorial Huruf Kustom Android Untuk info lebih lanjut
sumber
getResources()
? EDIT : Baris ini pada akhir jawaban Anda bekerja untuk saya:Typeface typeface = ResourcesCompat.getFont(context, R.font.myfont);
android:fontWeight
danapp:fontWeight
Saya harus menguraikan
/system/etc/fonts.xml
dalam proyek baru-baru ini. Berikut adalah keluarga font saat ini dari Lollipop:Inilah parser (berdasarkan dari FontListParser ):
Jangan ragu untuk menggunakan kelas di atas dalam proyek Anda. Misalnya, Anda bisa memberi pengguna Anda kumpulan font font dan mengatur jenis huruf berdasarkan preferensi mereka.
Contoh kecil tidak lengkap:
sumber
getSystemFonts()
, saya mendapat pengecualianorg.xmlpull.v1.XmlPullParserException: END_TAG expected (position:START_TAG (empty) <axis tag='wdth' stylevalue='100.0'>@219:51 in java.io.InputStreamReader@f001fb3)
Android tidak memungkinkan Anda untuk mengatur font khusus dari tata letak XML. Alih-alih, Anda harus menggabungkan file font tertentu di folder aset aplikasi Anda, dan mengaturnya secara terprogram. Sesuatu seperti:
Perhatikan bahwa Anda hanya dapat menjalankan kode ini setelah setContentView () dipanggil. Juga, hanya beberapa font yang didukung oleh Android, dan harus dalam format
.ttf (TrueType)
atau a.otf (OpenType)
. Meskipun begitu, beberapa font mungkin tidak berfungsi.Ini adalah font yang pasti berfungsi pada Android, dan Anda dapat menggunakannya untuk mengonfirmasi bahwa kode Anda berfungsi seandainya file font Anda tidak didukung oleh Android.
Pembaruan Android O: Sekarang dimungkinkan dengan XML di Android O , berdasarkan komentar Roger.
sumber
Untuk mengatur Roboto secara terprogram:
sumber
Itu sama dengan
android:typeface
.font bawaan adalah:
Lihat android: jenis huruf .
sumber
setTypeface()
. YaitufontFamily
,typeface
dantextStyle
. Tapi saya tidak bisa seumur hidup saya mencari tahu bagaimana ini dikombinasikan secara tepat untuk menyelesaikan contoh Typeface yang konkret. Adakah yang tahu ini? Dokumentasi Google kurang membantu ...Jika Anda menginginkannya secara terprogram, Anda dapat menggunakannya
Di mana
SANS_SERIF
Anda dapat menggunakan:DEFAULT
DEFAULT_BOLD
MONOSPACE
SANS_SERIF
SERIF
Dan di mana
ITALIC
Anda dapat menggunakan:BOLD
BOLD_ITALIC
ITALIC
NORMAL
Semua dinyatakan pada Pengembang Android
sumber
Saya menggunakan Kaligrafi perpustakaan yang sangat baik oleh Chris Jenx yang dirancang untuk memungkinkan Anda menggunakan font khusus di aplikasi Android Anda. Cobalah!
sumber
Apa yang Anda inginkan tidak mungkin. Anda harus mengatur
TypeFace
dalam Kode Anda.Yang
XML
bisa Anda lakukan adalahselain ini, Anda tidak dapat bermain banyak dengan Font dalam XML. :)
Untuk
Arial
Anda perlu mengatur jenis wajah dalam kode Anda.sumber
Cara mudah untuk mengelola font adalah dengan mendeklarasikannya melalui sumber daya, seperti:
Ini didasarkan pada kode sumber di sini dan di sini
sumber
Secara dinamis Anda dapat mengatur fontfamily mirip dengan android: fontFamily di xml dengan menggunakan ini,
Ini adalah daftar keluarga font default yang digunakan, gunakan semua ini dengan mengganti string kutipan ganda "sans-serif-medium"
"mycustomfont.ttf" adalah file ttf. Path akan ada di src / aset / fonts / mycustomfont.ttf , Anda dapat merujuk lebih lanjut tentang font default di keluarga font Default ini
sumber
atur font dengan mudah ke semua tampilan teks dari res> direktori font secara terprogram
sumber
Saya pikir saya sudah terlambat tetapi mungkin solusi ini bermanfaat bagi orang lain. Untuk menggunakan font khusus, tempatkan file font Anda di direktori font Anda.
sumber
Dengan beberapa trial and error saya belajar yang berikut ini.
Dalam * .xml Anda dapat menggabungkan fonta saham dengan fungsi berikut, tidak hanya dengan jenis huruf:
Dengan dua gaya ini, tidak perlu menggunakan jenis huruf dalam hal lain. Kisaran kombinasi jauh lebih besar dengan fontfamily & textStyle.
sumber
Nilai yang valid dari android: fontFamily didefinisikan dalam /system/etc/system_fonts.xml(4.x) atau /system/etc/fonts.xml(5.x). Tetapi Produsen Perangkat mungkin memodifikasinya, jadi font aktual yang digunakan dengan mengatur nilai fontFamily tergantung pada file yang disebutkan di atas dari perangkat yang ditentukan.
Dalam AOSP, font Arial valid tetapi harus didefinisikan menggunakan "arial" bukan "Arial", misalnya android: fontFamily = "arial" . Silakan lihat qucik di system_fonts.xml Kitkat
//////////////////////////////////////////////////// //////////////////////////
Ada tiga atribut xml yang relevan untuk mendefinisikan "font" dalam tata letak - android: fontFamily , android: typeface dan android: textStyle . Kombinasi "fontFamily" dan "textStyle" atau "typeface" dan "textStyle" dapat digunakan untuk mengubah tampilan font dalam teks, sehingga tidak digunakan sendiri. Cuplikan kode di TextView.java seperti ini:
Dari kode tersebut kita dapat melihat:
sumber
Berikut ini adalah cara yang lebih mudah yang dapat bekerja dalam beberapa kasus. Prinsipnya adalah menambahkan TextVview yang tidak terlihat di tata letak xml Anda dan untuk mendapatkan typeFace dalam kode java.
Tata letak dalam file xml:
Dan kode java:
Ini berhasil bagi saya (misalnya dalam TextSwitcher).
sumber
Coba ini:
sumber
Anda juga dapat melakukan ini dengan menambahkan folder font di bawah direktori res seperti di bawah ini.
Kemudian, pilih Font sebagai jenis sumber daya.
Anda dapat menemukan font yang tersedia dari https://www.1001fonts.com/ , dan kemudian mengekstrak file TTF ke direktori font ini.
Terakhir, ubah saja file XML yang berisi tampilan teks Anda dengan menambahkan android: fontFamily: "@ font / urfontfilename"
sumber
app:fontFamily=
namun Anda harus menggunakan , semua yang lain adalah sama.Salah satu cara sederhana adalah dengan menambahkan font yang diinginkan dalam proyek.
Pergi ke File-> Baru-> Font Pilih Direktori Direktori Baru
Ini akan membuat direktori baru, font , di sumber daya Anda.
Unduh font Anda (.ttf) . Saya menggunakan https://fonts.google.com untuk hal yang sama
Tambahkan itu ke folder font Anda kemudian gunakan dalam XML atau secara terprogram.
XML -
Secara terprogram -
sumber
ResourcesCompat.getFont
Metode penggunaan yang lebih baiksumber
Jika Anda ingin menggunakan TextView di banyak tempat dengan keluarga font yang sama, perluas kelas TextView dan atur font Anda seperti ini: -
Dan kemudian gunakan kelas khusus ini dalam xml untuk TextView seperti ini: -
sumber
Jika Anda menggunakan Android Studio 3.5+, Mengubah font sangat sederhana. Pilih widget teks pada tampilan Desain dan periksa fontFamily di Jendela Atribut. Dropdown nilai berisi semua font yang tersedia yang dapat Anda pilih. Jika Anda mencari Google Fonts, klik opsi More Fonts.
Jendela Atribut
Google Fonts
sumber
Saya hanya ingin menyebutkan bahwa font dengan Android akan segera berakhir, karena tahun ini di Google IO kita akhirnya mendapatkan ini -> https://developer.android.com/preview/features/working-with-fonts. html
Sekarang ada sumber daya baru ketik huruf dan Anda dapat menempatkan semua font aplikasi Anda di dalam res / font folder dan akses kemudian dengan R.font.my_custom_font, seperti Anda dapat mengakses string yang nilai res, ditarik res nilai dll Anda memiliki kesempatan bahkan untuk membuat font-face file xml , yang akan diatur font kustom Anda (tentang italic, bold dan garis bawahi attr).
Baca tautan di atas untuk info lebih lanjut. Mari kita lihat dukungannya.
sumber
Redman
jawaban pengguna di atas masih sangat banyak sehingga menjadi bagian penting dari solusi.Ada perpustakaan bagus yang tersedia untuk ini
sumber
Sumber daya font baru memungkinkan untuk mengatur secara langsung
font
menggunakansumber
Anda mengatur gaya
res/layout/value/style.xml
seperti itu:dan untuk menggunakan gaya ini dalam
main.xml
penggunaan file:sumber
Untuk android-studio 3 dan di atasnya, Anda dapat menggunakan gaya ini dan kemudian semua
textView
perubahan font di aplikasi.buat gaya ini di
style.xml
:Kemudian gunakan dalam tema Anda:
sumber
Cara termudah untuk menambahkan font secara terprogram ke TextView adalah, pertama-tama, tambahkan file font di folder Aset Anda dalam proyek. Misalnya jalur font Anda terlihat seperti ini:
assets/fonts/my_font.otf
Dan tambahkan ke TextView sebagai:
Kotlin
Jawa
sumber
Di sini Anda dapat melihat semua nilai fontFamily yang tersedia dan nama file font yang bersangkutan (File ini digunakan di android 5.0+). Di perangkat seluler, Anda dapat menemukannya di:
(Untuk Android 4.4 dan di bawah ini menggunakan versi ini , tapi saya pikir itu
fonts.xml
memiliki format yang lebih jelas dan mudah dimengerti.)Sebagai contoh,
Atribut nama
name="sans-serif"
darifamily
tag didefinisikan nilai yang Anda dapat menggunakan di android: fontFamily.Itu
font
tag mendefinisikan file font berkorespondensi.Dalam hal ini, Anda dapat mengabaikan sumber di bawah
<!-- fallback fonts -->
, itu menggunakan logika fallback font.sumber