Saya menggunakan font ringan Roboto di aplikasi saya. Untuk mengatur font saya harus menambahkan android:fontFamily="sans-serif-light"
ke setiap tampilan. Apakah ada cara untuk mendeklarasikan font Roboto sebagai keluarga font default untuk seluruh aplikasi? Saya sudah mencoba seperti ini tetapi sepertinya tidak berhasil.
<style name="AppBaseTheme" parent="android:Theme.Light"></style>
<style name="AppTheme" parent="AppBaseTheme">
<item name="android:fontFamily">sans-serif-light</item>
</style>
android
android-fonts
Tomrozb
sumber
sumber
Jawaban:
Jawabannya iya.
Global Roboto light untuk
TextView
danButton
kelas:Cukup pilih gaya yang Anda inginkan dari daftar themes.xml , lalu buat gaya kustom Anda berdasarkan yang asli. Pada akhirnya, terapkan gaya sebagai tema aplikasi.
Ini hanya akan berfungsi dengan font bawaan seperti Roboto, tapi itu pertanyaannya. Untuk font khusus (misalnya, diambil dari aset) metode ini tidak akan berfungsi.
EDIT 08/13/15
Jika Anda menggunakan tema AppCompat, ingatlah untuk menghapus
android:
awalan. Sebagai contoh:Perhatikan
buttonStyle
tidak mengandungandroid:
awalan, tetapitextViewStyle
harus memuatnya.sumber
sans-serif-light
nilainya? Apakah ada daftar nilai yang valid untukfontFamily
suatu tempat? Saya telah melihat-lihat dokumen, serta file tema dan gaya di sumber Android dan tidak dapat menemukan apa pun.Dengan rilis Android Oreo Anda dapat menggunakan perpustakaan dukungan untuk mencapai tujuan ini.
Referensi keluarga font default Anda dalam gaya utama aplikasi Anda:
Periksa https://developer.android.com/guide/topics/ui/look-and-feel/fonts-in-xml.html untuk informasi lebih lanjut.
sumber
android:
awalanBase.TextAppearance.AppCompat
, itu tidak digunakan di sana.Untuk mengubah font aplikasi Anda ikuti langkah-langkah berikut:
res
Direktori di dalam membuat direktori baru dan menyebutnyafont
.res
->values
->styles.xml
di dalam<resources>
-><style>
tambahkan font Anda<item name="android:fontFamily">@font/font_name</item>
.Sekarang semua teks aplikasi Anda harus dalam sumber yang Anda tambahkan.
sumber
BACA PEMBARUAN DI BAWAH INI
Saya memiliki masalah yang sama dengan menanamkan font baru dan akhirnya berhasil bekerja dengan memperluas TextView dan mengatur typefont di dalamnya.
Anda harus mengubah Elemen TextView nanti menjadi dari ke dalam setiap elemen. Dan jika Anda menggunakan UI-Creator di Eclipse, kadang-kadang dia tidak menunjukkan TextViews dengan benar. Adalah satu-satunya yang bekerja untuk saya ...
MEMPERBARUI
Saat ini saya menggunakan refleksi untuk mengubah tipografi di seluruh aplikasi tanpa memperluas TextViews. Lihatlah pos SO ini
PEMBARUAN 2
Dimulai dengan API Level 26 dan tersedia di 'perpustakaan dukungan' yang dapat Anda gunakan
Informasi lebih lanjut: Font dalam XML
sumber
getContext()
saat variabelnya statis. Anda harus mengimplementasikannya dengan cara singleton, jika tidak, kode saat ini bahkan tidak dapat dikompilasi.Tambahkan baris kode ini di res / value / styles.xml Anda
seluruh gaya akan terlihat seperti itu
ubah "circular_medium" menjadi nama font Anda sendiri ..
sumber
Tidak berbicara tentang kinerja, untuk font khusus Anda dapat memiliki loop metode rekursif melalui semua tampilan dan mengatur jenis huruf jika itu adalah TextView:
Di semua aktivitas Anda, sampaikan ViewGroup saat ini setelah setContentView dan selesai:
Untuk fragmen Anda dapat melakukan hal serupa.
sumber
recyclerView
seperti neraka.Cara lain untuk melakukan ini untuk seluruh aplikasi adalah menggunakan refleksi berdasarkan jawaban ini
maka setiap kali Anda ingin mengganti font, Anda bisa memanggil metode dan memberikannya peta tipografi sebagai berikut:
untuk contoh cek lengkap
Ini hanya berfungsi untuk Android SDK 21 ke atas untuk versi sebelumnya, periksa contoh lengkapnya
sumber
Cukup gunakan lib ini kompilasi di file kelas Anda
dan menggunakannya dalam metode onCreate dalam aktivitas utama
Ini adalah cara super cepat yang paling elegan untuk melakukan itu.
sumber
Ini berfungsi untuk proyek saya, sumber https://gist.github.com/artem-zinnatullin/7749076
Buat direktori font di dalam Folder Aset dan kemudian salin font khusus Anda ke direktori font, misalnya saya menggunakan trebuchet.ttf;
Buat kelas TypefaceUtil.java;
Edit tema di styles.xml tambahkan di bawah
Contoh di My styles.xml
Terakhir, di Activity atau Fragment onCreate, panggil TypefaceUtil.java
sumber
Android tidak menyediakan banyak dukungan untuk penerapan font di seluruh aplikasi (lihat masalah ini ). Anda memiliki 4 opsi untuk mengatur font untuk seluruh aplikasi:
Detail opsi ini dapat ditemukan di sini .
sumber
Saya tahu pertanyaan ini sudah cukup lama, tetapi saya telah menemukan solusi yang bagus. Pada dasarnya, Anda meneruskan tata letak wadah ke fungsi ini, dan itu akan menerapkan font ke semua tampilan yang didukung, dan secara berulang berulang dalam tata letak anak:
sumber
untuk hanya set jenis huruf dari aplikasi untuk
normal
,sans
,serif
ataumonospace
(tidak font kustom!), Anda dapat melakukan hal ini.tentukan tema dan atur
android:typeface
atribut ke jenis huruf yang ingin Anda gunakan distyles.xml
:terapkan tema ke seluruh aplikasi dalam
AndroidManifest.xml
file:referensi android
sumber
Coba pustaka ini, ringan dan mudah diimplementasikan
https://github.com/sunnag7/FontStyler
sumber
Jawabannya adalah tidak, Anda tidak bisa. Lihat Apakah mungkin untuk mengatur font khusus untuk seluruh aplikasi? untuk informasi lebih lanjut.
Ada beberapa solusi, tetapi tidak ada dalam baris "satu baris kode di sini dan semua font saya akan menjadi ini, bukan itu ".
(Saya agak berterima kasih kepada Google -dan Apple- untuk itu). Font khusus memiliki tempat, tetapi membuatnya mudah untuk menggantikan lebar aplikasi, akan menciptakan seluruh dunia aplikasi Comic Sans )
sumber