Sto provando a calcolare la larghezza di un paragrafo di testo multilinea. Per quanto ne so, l'unica classe che può farlo in Android è la classe StaticLayout (o DynamicLayout). Quando uso questa classe non ottengo la lunghezza corretta del mio frammento di testo, ma piuttosto le dimensioni misurate sono a volte più piccole e talvolta maggiori a seconda delle dimensioni del testo.Come determinare in modo affidabile la larghezza di una stringa multi linea?
Quindi sono fondamentalmente alla ricerca di un modo per misurare in modo affidabile la larghezza di una stringa di testo multilinea.
L'immagine seguente mostra come la larghezza misurata diverge dalla lunghezza effettiva del testo in varie dimensioni del testo.
La schermata viene creato in esecuzione il codice seguente in una visualizzazione personalizzata:
@Override
protected void onDraw(Canvas canvas) {
for(int i = 0; i < 15; i++) {
int startSize = 10;
int curSize = i + startSize;
paint.setTextSize(curSize);
String text = i + startSize + " - " + TEXT_SNIPPET;
layout = new StaticLayout(text,
paint,
Integer.MAX_VALUE,
Alignment.ALIGN_NORMAL,
1.0f,
0.0f,
true);
float top = STEP_DISTANCE * i;
float measuredWidth = layout.getLineMax(0);
canvas.drawRect(0, top, measuredWidth, top + curSize, bgPaint);
canvas.drawText(text, 0, STEP_DISTANCE * i + curSize, paint);
}
}
Hai provato 'Paint.measureText()'? – neevek
http://stackoverflow.com/questions/7549182/android-paint-measuretext-vs-gettextbounds – nullpotent
@Neevek produce lo stesso risultato, ma in cima non è in grado di misurare il testo su più righe. – Moritz