Di dimens.xml, saya memiliki:
<dimen name="text_medium">18sp</dimen>
Dalam runtime, saya mendapatkan nilai ini dan mengatur ukuran teks tampilan teks:
int size = context.getResources().getDimensionPixelSize(R.dimen.text_medium);
textView.setTextSize(size).
Pada tablet 10 (1280 x 800), semuanya baik-baik saja; tetapi pada telepon (800 x 480), tampilan teks memiliki font yang sangat besar. Di tablet, ukurannya sama dengan 18; di telepon, itu 27.
Jika saya mengatur ukuran secara manual dengan:
textView.setTextSize(size)
ukurannya normal di kedua perangkat.
android
textview
dimensions
Yura Shinkarev
sumber
sumber
TypedValue.COMPLEX_UNIT_SP
?Resources.getDimension()
Metode mengembalikan nilai yang sudah dikalikan dengan metrik yang sesuaiKedua metode getDimensionPixelSize () dan getDimension () menggunakan kepadatan layar untuk menghitung piksel. Kepadatan layar ponsel Anda jelas hdpi (240dpi) sehingga menggunakan skala 1,5 untuk mengubah dp ke sp. Matematika sederhana 18 * 1,5 = 27.
Tampaknya kepadatan tablet Anda adalah mdpi (160dpi) sehingga skalanya hanya 1: 1.
Tetapi jika Anda membandingkan ukuran sebenarnya dari kedua teks, itu harus sama.
Cara terbaik adalah membuat dua file dimens.xml satu di folder nilai untuk ponsel, dan satu lagi di values-sw600dp untuk tablet (Anda juga bisa menggunakan folder values-sw720dp untuk menyimpan dimensi untuk tablet 10 inci dalam orientasi lanskap).
Anda dapat membaca lebih lanjut tentang dimensi di Android di: http://android4beginners.com/2013/07/appendix-c-everything-about-sizes-and-dimensions-in-android/
sumber
Anda dapat menggunakan sdp (Scalable desnsity pixels) https://github.com/intuit/sdp sebagai pengganti dp, ini pasti akan menyelamatkan hidup Anda
sumber