Panggilan TextView.setTextSize()
bekerja secara tidak normal. Tepat setelah panggilan ke setTextSize
jika kita mendapatkan getTextSize
kembali nilai yang jauh lebih tinggi dari apa yang kita atur sebelumnya.
Inilah yang kami lakukan:
zoomControl.setOnZoomInClickListener(new OnClickListener() {
public void onClick(View view) {
float size = mViewShabad.getTextSize() + 1;
textView.setTextSize(size);
}
});
Adakah yang pernah melihat ini sebelumnya?
Jawaban:
Perbedaannya di sini adalah bahwa dalam
setTextSize(int size)
metode, tipe unit secara default adalah "sp" atau "piksel berskala". Nilai ini akan menjadi dimensi piksel yang berbeda untuk setiap kepadatan layar (ldpi, mdpi, hdpi).getTextSize()
, di sisi lain, mengembalikan dimensi piksel teks yang sebenarnya.Anda dapat menggunakan
setTextSize(int unit, float size)
untuk menentukan tipe unit. Nilai konstan untuk ini dapat ditemukan di kelas TypedValue, tetapi beberapa di antaranya adalah:sumber
masalah ini terjadi karena
getTextSize()
metode mengembalikan ukuran dalam piksel tergantung pada kepadatan layar! untuk mendapatkan TextSize Aktual gunakan ini:saya harap ini menyelesaikannya :)
sumber
setTextSize(int unit, float size)
。jika Pengaturan mengubah ukuran font , sesuatu penyebab kesalahan pertunjukan , Anda dapat melakukan sebagai :
sumber
DIP
?Ketika kita mencoba untuk masalah setText () secara terprogram dengan getTextSize (), mengembalikan nilai dalam px bukan sp / dp / dip dan kita tahu 1sp / dp = 1.5px (ukuran layar = 240).
berfungsi dengan sempurna untuk saya atau kita dapat menggunakan rasio displaymatrix ke px: sp / dp lalu ganti nilainya dengan 1.5f
sumber
Setelah sekian lama melanda hal ini dan akhirnya terselesaikan seperti ini
buat folder dimen seperti ini res / values / dimensional.xml
sumber
Singkatnya, jika Anda ingin memperkecil ukuran teks Anda
Karena getTextSize () mengembalikan UNIT_PX, maka kita harus menggunakan UNIT_PX
sumber
Solusi Kotlin
Untuk menyetel menggunakan sumber daya, cukup gunakan ini:
Untuk melakukan hal yang sama dengan nilai resource, tambahkan properti ekstensi ini agar lebih mudah menyetel ukuran teks Anda
sumber
Menambahkan beberapa rasa ekstra untuk jawaban ini, karena juga menimbulkan sedikit kebingungan. Anda harus dapat melepaskan tes ini ke dalam
@RunWith(AndroidJUnit4.class)
tes apa pun yang Anda miliki di proyek Anda (Anda juga harus menambahkan dimens ke dimens.xml Anda).Catatan: Semua tes ini lulus
Hal besar yang saya temukan adalah yang
TextView.setTextSize(float)
menerapkan penskalaan font , jadi jika Anda mengirimkan dimen yang sudah diberi label sebagai SP, bukan DP, maka itu akan menerima penskalaan font dua kali .sumber