Saya ingin mendapatkan ketinggian juga jika memungkinkan.
android
string
bounding-box
Mikael Lindlöf
sumber
sumber
textView.setTextSize()
.Jika Anda hanya membutuhkan lebar, Anda dapat menggunakan:
http://developer.android.com/reference/android/graphics/Paint.html#measureText(java.lang.String)
sumber
TextPaint paint = new TextPaint(); paint.setTextSize(textSize);
.textSize
dalam piksel.Ada dua ukuran lebar yang berbeda untuk sebuah teks. Salah satunya adalah jumlah piksel yang telah digambar dalam lebarnya, yang lainnya adalah jumlah 'piksel' yang harus dimajukan kursor setelah menggambar teks.
paint.measureText dan paint.getTextWidths mengembalikan jumlah piksel (dalam float) yang harus dimajukan kursor setelah menggambar string yang diberikan. Untuk jumlah piksel yang dicat, gunakan paint.getTextBounds seperti yang disebutkan dalam jawaban lain. Saya percaya ini disebut 'Maju' dari font.
Untuk beberapa font, kedua ukuran ini berbeda (banyak), misalnya font Black Chancery memiliki huruf-huruf yang melampaui huruf lainnya (tumpang tindih) - lihat kapital 'L'. Gunakan paint.getTextBounds seperti yang disebutkan dalam jawaban lain untuk melukis piksel.
sumber
Saya telah mengukur lebar dengan cara ini:
Ini akan membantumu.
sumber
Kemungkinan besar Anda ingin mengetahui dimensi yang dicat untuk string teks tertentu dengan font tertentu (yaitu yang khusus
Typeface
seperti keluarga font "sans-serif" dengan gaya BOLD_ITALIC, dan ukuran tertentu dalam sp atau px).Daripada menggembungkan penuh
TextView
, Anda bisa turun ke tingkat yang lebih rendah dan bekerja denganPaint
objek secara langsung untuk teks satu baris , misalnya:Untuk teks multi-baris atau bentang (
SpannedString
), pertimbangkan untuk menggunakan aStaticLayout
, di mana Anda memberikan lebar dan tinggi. Untuk jawaban yang sangat terperinci tentang mengukur dan menggambar teks ke kanvas dalam tampilan kustom, lihat: https://stackoverflow.com/a/41779935/954643Juga perlu diperhatikan balasan @ arberg di bawah ini tentang piksel yang dicat vs lebar muka ("jumlah piksel (dalam float) yang kursornya harus ditingkatkan setelah menggambar string yang diberikan"), jika Anda perlu mengatasinya.
sumber
Saya ingin berbagi cara yang lebih baik (lebih fleksibel daripada jawaban yang diterima saat ini) untuk mendapatkan lebar yang tepat dari teks yang digambar (
String
) dengan menggunakan kelas statisStaticLayout
:metode ini lebih akurat daripada
textView.getTextBounds()
, karena Anda dapat menghitung lebar satu baris dalam multilineTextView
, atau Anda mungkin tidak menggunakannyaTextView
untuk memulai (misalnya dalamView
implementasi kustom ).Cara ini mirip dengan
textPaint.measureText(text)
, namun tampaknya lebih akurat dalam kasus yang jarang terjadi.sumber