Apakah ada metode yang mengembalikan lebar (dalam piksel) teks yang akan digambar di kanvas Android menggunakan metode drawText () sesuai dengan Paint yang digunakan untuk menggambarnya?
android
text
android-canvas
draw
NioX5199
sumber
sumber
sumber
Jawaban tambahan
Ada sedikit perbedaan antara lebar yang dikembalikan oleh
Paint.measureText
danPaint.getTextBounds
.measureText
mengembalikan lebar yang mencakup nilai advanceX glyph yang melapisi bagian awal dan akhir string. TheRect
lebar dikembalikan olehgetTextBounds
tidak memiliki bantalan ini karena batas adalahRect
bahwa erat membungkus teks.sumber
sumber
Sebenarnya ada tiga cara berbeda untuk mengukur teks.
GetTextBounds:
MeasureTextWidth:
Dan getTextWidths:
Perhatikan bahwa getTextWidths bisa berguna jika Anda mencoba menentukan kapan harus membungkus teks ke baris berikutnya.
MeasTextWidth dan getTextWidth sama dan memiliki lebar lanjutan yang mengukur yang diposkan orang lain. Beberapa menganggap ruang ini berlebihan. Namun, ini sangat subjektif dan tergantung pada font.
Misalnya lebar dari batas teks ukuran sebenarnya terlihat terlalu kecil:
Namun ketika menambahkan teks tambahan, batas untuk satu huruf terlihat normal:
Gambar diambil dari Android Developers Guide to Custom Canvas Drawing
sumber
Yah saya telah melakukan dengan cara yang berbeda:
Semoga ini bisa membantu Anda.
sumber
Saya menggunakan metode mengukurText () dan getTextPath () + computeBounds () dan membangun Excel dengan semua atribut teks untuk font ukuran tetap yang dapat ditemukan di bawah https://github.com/ArminJo/android-blue-display/blob /master/TextWidth.xlsx . Di sana Anda akan menemukan juga rumus sederhana untuk atribut teks lainnya seperti naik dll.
The app serta fungsi drawFontTest () untuk menghasilkan nilai-nilai baku yang digunakan dalam excel juga tersedia di repo ini.
sumber
Anda dapat menggunakan "textPaint.getTextSize ()" untuk mendapatkan lebar teks
sumber