Come John ha sottolineato, non si sarà in grado di ottenere l'altezza immediatamente dopo setText. Non sono sicuro che l'uso di getHeight() sul TextView stesso ti aiuterà molto. L'altezza della vista non dipende solo dall'altezza del testo visibile nella vista, ma anche dal viewgroup/layout in cui risiede TextView. Se il viewgroup dice a TextView di massimizzare l'altezza, getHeight() non ti porta da nessuna parte se si aspetta fino a dopo il rendering del testo.
vedo un certo numero di modi in cui questo potrebbe essere fatto:
- sottoclasse TextView e sovrascrivere il metodo onSizeChanged. Qui, chiama supers onSizeChanged, quindi ottieni il numero di linee all'interno di TextView di getLineCount() e l'altezza per riga con getLineHeight(). Questo potrebbe o potrebbe non essere migliore dell'uso di getHeight(), a seconda del layout o di quant'altro.
Non utilizzare le dimensioni di Textview. Prendi TextViews Paint con TextView.getPaint(), quindi calcola la larghezza e l'altezza da
Limiti; paint.getTextBounds (testo, 0, text.length(), limiti);
Ora avrete le dimensioni in limiti. Ora puoi lavorare con paint.breakText per vedere quanto testo si adatta a una riga. Probabilmente troppa seccatura e non è garantito (al mio occhio inesperto) la stessa logica usata da TextView.
fonte
2011-02-06 14:03:33
Non è possibile ottenere l'altezza di una vista finché non è stata sottoposta a rendering, ecco perché si ottiene sempre 0 restituiti se si controlla l'altezza subito dopo aver impostato il testo. Perché hai bisogno di conoscere l'altezza? Per favore spiega di più su cosa stai cercando di ottenere. –
in realtà ho avuto modo di sviluppare un'applicazione che visualizza il testo e le immagini (proprio come un lettore di ebook) pagina per pagina (voglio dire che non dovrebbe contenere nessuna barra di scorrimento) ... quindi, quando ho una grande quantità di testo da inserire, ho bisogno di sapere quanto il testo sta occupando sullo schermo in modo che si adatti allo schermo .. –