Apakah mungkin untuk mengatur font khusus di setiap kontrol aplikasi? Dan belum tentu runtime? (yaitu dari xml jika memungkinkan atau hanya sekali untuk seluruh aplikasi dalam file JAVA)
Saya dapat mengatur font untuk satu kontrol dari kode ini.
public static void setFont(TextView textView) {
Typeface tf = Typeface.createFromAsset(textView.getContext()
.getAssets(), "fonts/BPreplay.otf");
textView.setTypeface(tf);
}
Dan masalah dengan kode ini adalah harus dipanggil untuk setiap kontrol. Dan saya ingin memanggil ini atau metode serupa sekali, atau jika mungkin mengatur properti dalam xml. Apa itu mungkin?
android
fonts
textview
android-fonts
Prasham
sumber
sumber
VIEW
daripada menulis acustom text view
dan acustom button view
secara terpisah? Persyaratan saya adalah untuk setiap kontrol, dan tampilan teks hanyalah sebuah contoh. Maaf, saya lupa menyebutkannya .. :-(Jawaban:
EDIT : Jadi sudah lama, dan saya ingin menambahkan apa yang menurut saya adalah cara terbaik untuk melakukan ini, dan melalui XML tidak kurang!
Jadi pertama-tama, Anda ingin membuat kelas baru yang menimpa Tampilan apa pun yang ingin Anda sesuaikan. (mis. ingin Tombol dengan jenis huruf kustom? Perluas
Button
). Mari kita buat contoh:Sekarang, jika Anda tidak memilikinya, tambahkan dokumen XML di bawah
res/values/attrs.xml
, dan tambahkan:Oke, jadi setelah itu, mari kita kembali ke
parseAttributes()
metode dari sebelumnya:Sekarang Anda sudah siap. Anda dapat menambahkan lebih banyak atribut untuk tentang apa saja (Anda dapat menambahkan atribut lain untuk typefaceStyle - tebal, miring, dll.) Tetapi sekarang mari kita lihat cara menggunakannya:
Itu
xmlns:custom
garis benar-benar dapat apa-apa, tapi konvensi adalah apa yang ditunjukkan di atas. Yang penting itu unik, dan itulah mengapa nama paket digunakan. Sekarang Anda cukup menggunakancustom:
awalan untuk atribut Anda, danandroid:
awalan untuk atribut android.Satu hal terakhir: jika Anda ingin menggunakan ini dalam gaya (
res/values/styles.xml
), Anda tidak boleh menambahkanxmlns:custom
baris. Cukup rujuk nama atribut tanpa awalan:Menggunakan jenis huruf khusus di Android
Ini akan membantu. Pada dasarnya, tidak ada cara untuk melakukan ini dalam XML, dan sejauh yang saya tahu, tidak ada cara yang lebih mudah untuk melakukannya dalam kode. Anda selalu bisa memiliki metode setLayoutFont () yang membuat jenis huruf satu kali, lalu menjalankan setTypeface () untuk masing-masing. Anda hanya perlu memperbaruinya setiap kali Anda menambahkan item baru ke tata letak. Sesuatu seperti di bawah ini:
EDIT : Jadi saya baru saja menerapkan sesuatu seperti ini sendiri, dan bagaimana saya akhirnya melakukannya adalah membuat fungsi seperti ini:
Kemudian, cukup gunakan metode ini dari onCreate (), dan teruskan semua TextView yang ingin Anda perbarui:
EDIT 9/5/12:
Jadi karena ini masih mendapatkan tampilan dan suara, saya ingin menambahkan metode yang jauh lebih baik dan lebih lengkap:
Jika Anda meneruskannya ke root layout Anda, itu akan secara rekursif memeriksa
TextView
atauButton
melihat (atau orang lain yang Anda tambahkan ke pernyataan if) di dalam tata letak itu, dan menyetel font tanpa Anda harus menentukannya dengan ID. Ini tentu saja dengan asumsi Anda ingin mengatur font ke setiap tampilan.sumber
recycle
yangTypedArray values
?xmlns:custom="http://schemas.android.com/apk/res-auto"
Ada cara yang cukup mudah untuk melakukan ini melalui XML. Anda hanya perlu membuat widget Anda sendiri yang memperluas TextView.
Pertama, buat file dalam res / values / attrs.xml dengan konten berikut:
Setelah itu, buat widget khusus Anda:
Seperti yang Anda lihat, kode di atas akan membaca font di dalam aset / folder. Untuk contoh ini, saya mengasumsikan bahwa ada file bernama "custom.ttf" di folder aset. Terakhir, gunakan widget di XML:
Catatan: Anda tidak akan dapat melihat font khusus Anda di editor tata letak Eclipse. Inilah mengapa saya memberi
isInEditMode()
cek. Tetapi jika Anda menjalankan aplikasi Anda, font khusus akan berfungsi dengan baik.Semoga membantu!
sumber
TextView
kelas; aturtypeface
di dalamnya dan gunakan kontrol khusus dalam tata letak seperti yang biasa kita lakukan & itu bekerja untuk saya ... Sederhana saja, bahwa yang di atas ...Contoh TextView dengan jenis huruf roboto:
attr.xml
RobotoTextView.java:
Contoh penggunaan:
Sumber: Font Roboto & Noto
sumber
Sudah terlambat tetapi saya membantu yang lain
saya telah membuat CustomTextView yang memiliki atribut yang disebut typeFace dan itu menangani masalah kebocoran memori dengan pemuatan jenis huruf tanpa caching
Pertama
Fonts
kelas yang memuat font dari aset untuk satu kali sajamaka Anda perlu menambahkan atribut khusus di attrs.xml tambahkan ini
lalu kelas khusus
dan terakhir tambahkan tampilan teks
dan Anda dapat mengubah font secara progrmaticlly dengan metode setTypeFace
juga Anda dapat memindahkan namespace kustom ke tata letak induk jika Anda ingin menggunakan lebih dari satu dari tampilan ini
Selamat Coding :)
sumber
Metode di bawah ini, memanggil onCreate () dan meneruskan ViewGroup terluar Anda, akan bekerja untuk semua hal kecuali teks yang dibuat secara dinamis (mis. Daftar dinamis, peringatan, dll.). Cara mudah untuk mendapatkan ViewGroup terluar adalah dengan menggunakan getRootView di salah satu tampilan Anda.
Ini juga harus berfungsi untuk konten dinamis, Anda hanya perlu menyebutnya, meneruskan apa pun yang Anda buat, tepat setelah Anda membuatnya (saya belum menguji ini).
Untuk menghemat memori, Anda mungkin ingin membuat jenis huruf menjadi variabel statis, daripada membuat yang baru setiap kali loop berjalan seperti yang saya lakukan di sini.
sumber
Jika Anda mencari solusi programatik yang lebih umum, saya membuat kelas statis yang dapat digunakan untuk mengatur Jenis huruf dari seluruh tampilan (Activity UI). Perhatikan bahwa saya bekerja dengan Mono (C #) tetapi Anda dapat menerapkannya dengan mudah menggunakan Java.
Anda dapat memberikan kelas ini tata letak atau tampilan tertentu yang ingin Anda sesuaikan. Jika Anda ingin menjadi super efisien, Anda dapat menerapkannya menggunakan pola Singleton.
Dalam aktivitas Anda, Anda perlu membuat objek Typeface. Saya membuat milik saya di OnCreate () menggunakan file .ttf yang ditempatkan di direktori Resources / Assets / saya. Pastikan file tersebut ditandai sebagai Android Asset di propertinya.
sumber
Sayangnya, Android tidak menyediakan cara cepat, mudah, dan bersih yang Anda cari untuk mengubah font untuk seluruh aplikasi Anda. Tetapi baru-baru ini saya telah melihat masalah ini dan membuat beberapa alat yang memungkinkan Anda untuk mengubah font tanpa pengkodean apa pun (Anda dapat melakukan semuanya melalui xml, gaya, dan bahkan tampilan teks). Mereka didasarkan pada solusi serupa seperti yang Anda lihat di jawaban lain di sini, tetapi memungkinkan lebih banyak fleksibilitas. Anda dapat membaca semuanya di blog ini , dan melihat proyek github di sini .
Berikut contoh cara menerapkan alat-alat ini. Masukkan semua file font Anda
assets/fonts/
. Kemudian, nyatakan font tersebut dalam file xml (misalnyares/xml/fonts.xml
) dan muat file ini di awal aplikasi Anda denganTypefaceManager.initialize(this, R.xml.fonts);
(misalnya, di onCreate kelas Aplikasi Anda). File xml terlihat seperti ini:Sekarang Anda dapat menggunakan font ini dalam gaya atau xml Anda (asalkan Anda menggunakan alat yang saya sebutkan di atas), dengan menggunakan elemen UI khusus
com.innovattic.font.FontTextView
dalam tata letak xml Anda. Di bawah ini Anda dapat melihat bagaimana Anda dapat menerapkan font ke semua teks di seluruh aplikasi Anda, hanya dengan mengeditres/values/styles.xml
:Dengan menyertai
res/layout/layout.xml
:Jangan lupa untuk menerapkan tema di manifes Android Anda.
sumber
Saya ingin menambahkan catatan ke solusi hebat dari
leocadiotine
. Ini sempurna, tetapi ketika menggunakan Custom TextView ini banyak waktu memperlambat aplikasi, karena harus mengakses aset setiap kali textview dibuat. Saya menyarankan untuk menggunakan sesuatu sepertiView Holder pattern
diAdapters
, saya menulis contoh:Dengan cara ini aplikasi hanya mengakses aset satu kali per aset, dan menyimpannya dalam memori untuk kebutuhan selanjutnya.
sumber
Saya tidak tahu apakah itu mengubah seluruh aplikasi, tetapi saya telah berhasil mengubah beberapa komponen yang tidak dapat diubah dengan melakukan ini:
sumber
Saya telah menemukan informasi langkah demi langkah di tautan ini, tautan: https://github.com/jaydipumaretiya/CustomTypeface/
Ada banyak cara untuk menggunakan jenis huruf dengan benar di android, Anda harus meletakkan file jenis huruf Anda di folder assets di bawah utama Anda secara langsung dan dapat menggunakannya secara run-time.
Cara termudah lainnya adalah menggunakan pustaka default untuk mengatur jenis huruf di file xml Anda. Saya lebih suka pustaka jenis huruf kustom ini untuk menyetel jenis huruf ke TextView, EditText, Button, CheckBox, RadioButton dan AutoCompleteTextView dan wedget lainnya di android.
sumber
Android 8.0 (API level 26) memperkenalkan fitur baru, Font dalam XML. Anda bisa membuat file fontfamily dan menyetelnya di styles.xml.
Sumber: Font dalam XML
sumber