Jika saya menetapkan nilai integer untuk mengubah ukuran teks tertentu dari TextView
menggunakan kode java, nilai ditafsirkan sebagai pixel ( px
).
Sekarang adakah yang tahu cara menugaskannya sp
?
http://developer.android.com/reference/android/widget/TextView.html#setTextSize%28int,%20float%29
Contoh:
textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 65);
textView.setTextSize(TypedValue.COMPLEX_UNIT_PX, getResources().getDimension(R.dimen.my_text_size_in_sp));
Mendapatkan ukuran teks Anda dengan cara ini sudah akan mengonversi SP ke PX, dengan mempertimbangkan kepadatan layar dan faktor skala teks dalam akun.Anda dapat menggunakan
DisplayMetrics
objek untuk membantu mengonversi antara piksel dan piksel berskala denganscaledDensity
atribut .sumber
may be adjusted in smaller increments at runtime based on a user preference for the font size
bahwa ukuran font akan diperhitungkan.Pendekatan yang lebih bersih dan lebih dapat digunakan kembali adalah
tentukan ukuran teks dalam
dimens.xml
file di dalamres/values/
direktori:dan kemudian menerapkannya pada
TextView
:sumber
Berdasarkan pada kode sumber
setTextSize
:Saya membangun fungsi ini untuk menghitung demension ke piksel:
Di mana unit adalah sesuatu seperti
TypedValue.COMPLEX_UNIT_SP
.sumber
Secara default setTextSize, tanpa unit bekerja di SP (skala pixel)
sumber
Terima kasih @John Leehey dan @PeterH:
Masalahnya adalah jika Anda mendefinisikan R.dimen.desired_sp hingga 25 di dimen.xml Anda
sumber
Ketika jawaban yang diterima tidak berfungsi (misalnya ketika berhadapan dengan Paint), Anda dapat menggunakan:
sumber
sumber
COMPLEX_UNIT_PX
Anda perlu membagi kepadatan.Ini adalah kode untuk format konversi PX ke SP . 100% Bekerja
sumber
Setelah mencoba semua solusi dan tidak ada yang memberikan hasil yang dapat diterima (mungkin karena saya bekerja pada perangkat dengan font standar sangat besar), yang berikut ini berfungsi untuk saya (COMPLEX_UNIT_DIP = Device Independent Pixels):
sumber
Dari Api level 1, Anda dapat menggunakan
public void setTextSize (float size)
metode ini.Dari dokumentasi:
Jadi Anda dapat dengan mudah melakukan:
sumber