Saya ingin menentukan ukuran teks saya sendiri di aplikasi saya, tetapi saya mengalami masalah melakukan ini.
Ketika saya mengubah ukuran font di pengaturan perangkat, ukuran font aplikasi saya TextView
juga berubah.
android
android-layout
textview
android-fonts
Vikasdeep Singh
sumber
sumber
Jawaban:
Sebenarnya, ukuran font Pengaturan hanya memengaruhi ukuran dalam
sp
. Jadi semua Anda perlu melakukan - menentukantextSize
didp
bukansp
, maka pengaturan tidak akan mengubah ukuran teks dalam aplikasi Anda.Berikut tautan ke dokumentasi: Dimensi
Namun harap dicatat bahwa perilaku yang diharapkan adalah font di semua aplikasi menghormati preferensi pengguna. Ada banyak alasan seorang pengguna mungkin ingin menyesuaikan ukuran font dan beberapa dari mereka bahkan mungkin pengguna yang tunanetra. Menggunakan
dp
alih-alihsp
untuk teks dapat menyebabkan diskriminasi dengan enggan terhadap beberapa pengguna aplikasi Anda.yaitu:
sumber
sp
dan kapan saya harus menggunakannyadp
. Saya mendapat respons yang sangat baik di sini: stackoverflow.com/questions/11638691/…Cara termudah untuk melakukannya adalah dengan menggunakan sesuatu seperti berikut:
Jika Anda ingin tahu lebih banyak tentang
textSize
properti ini, Anda dapat memeriksa dokumentasi pengembang Android .sumber
Gunakan
dimension
jenis sumber daya seperti Anda menggunakanstring
sumber daya ( DOCS ).Di
dimens.xml
file Anda , deklarasikan variabel dimensi Anda:Kemudian Anda dapat menggunakan nilai-nilai ini seperti ini:
Anda dapat mendeklarasikan
dimens.xml
file yang berbeda untuk berbagai jenis layar. Melakukan hal ini akan menjamin tampilan aplikasi yang Anda inginkan pada perangkat yang berbeda.Ketika Anda tidak menentukan
android:textSize
sistem menggunakan nilai default.sumber
Juga perhatikan bahwa jika textSize diatur dalam kode, panggilan
textView.setTextSize(X)
menafsirkan angka (X) sebagai SP. GunakansetTextSize(TypedValue.COMPLEX_UNIT_DIP, X)
untuk mengatur nilai dalam dp .sumber
Ini bukan hal yang baik untuk menentukan DIP atau SP lagi dengan kode ketika sudah didefinisikan dalam file dimen.xml.
Saya pikir pilihan terbaik adalah menggunakan PX saat menggunakan nilai dimen.xml:
Dengan cara ini, Anda dapat beralih dari DP ke SP jika diperlukan dalam file dimen.xml tanpa harus mengubah kode apa pun.
sumber
cara sederhana untuk mencegah seluruh aplikasi tidak terpengaruh oleh ukuran font sistem adalah memperbarui Konfigurasi menggunakan aktivitas dasar.
sumber
ini bisa membantu. tambahkan kode di Aplikasi kustom Anda atau BaseActivity
namun, Resource # updateConfiguration dideplicasikan di API level 25, yang artinya akan tidak didukung suatu hari di masa mendatang.
sumber
Anda dapat menggunakan kode ini:
itu memecahkan masalah Anda tetapi Anda harus tahu bahwa Anda harus menghormati keputusan pengguna. dengan ini, mengubah ukuran teks dari pengaturan perangkat tidak akan mengubah nilai ini. jadi itu sebabnya Anda harus menggunakan sp bukan dp . Jadi saran saya adalah meninjau aplikasi Anda dengan ukuran font sistem yang berbeda (kecil, normal, besar, ...)
sumber
untuk kotlin, itu bekerja untukku
sumber
ubah DP ke sp itu adalah praktik yang baik untuk android android: textSize = "18sp"
sumber
Jika unit yang digunakan adalah SP, bukan DP, dan Anda ingin mengganti penskalaan font sistem, yang Anda lakukan hanyalah mengganti satu metode dalam aktivitas - lihat posting ini .
resource.updateConfiguration sudah usang dan buggy (di Oreo saya punya masalah dengan teks yang diformat).
sumber
Timpa
getResources()
dalam Aktivitas.Atur ukuran TextView dalam sp seperti biasanya
android:textSize="32sp"
sumber
di android 8 solusi ini berfungsi untuk saya
tambahkan kode ini dalam aktivitas dasar
sumber https://stackoverflow.com/a/57225687/7985871
sumber