Como Juan señaló, no será capaz de obtener la altura inmediatamente después setText. No estoy seguro de que el uso de getHeight() en el TextView en sí te sirva de mucho. La altura de la vista no solo depende de la altura del texto visible en la vista, sino también del grupo de vistas/diseño en el que reside TextView. Si el grupo de vistas le dice a TextView que maximice la altura, getHeight() no te llevará a ninguna parte si esperas hasta después de que se represente el texto.
veo un número de maneras en que esto se podría hacer:
- TextView subclase y sobreescribir el método onSizeChanged. Allí, llame a supers enSizeChanged, luego obtenga el número de líneas dentro de TextView por getLineCount() y la altura por línea con getLineHeight(). Esto podría o no ser mejor que usar getHeight(), dependiendo de su diseño o lo que sea.
No utilice las dimensiones de Textviews. Obtenga TextViews Paint con TextView.getPaint() y luego calcule el ancho y el alto desde
Rect bounds; paint.getTextBounds (texto, 0, text.length(), límites);
Ahora tendrá las dimensiones dentro de los límites. Ahora puede trabajar con paint.breakText para ver la cantidad de texto que cabe en una línea. Probablemente demasiada molestia y no está garantizado (para mi ojo no entrenado) que sea la misma lógica que usa TextView.
No se puede obtener el alto de una vista hasta que se haya procesado, es por eso que siempre se devuelve 0 si se está comprobando la altura justo después de configurar el texto. ¿Por qué necesitas saber la altura? Por favor explica más sobre lo que estás tratando de lograr. –
en realidad tengo que desarrollar una aplicación que muestre el texto y las imágenes (como un lector de libros electrónicos) página por página (me refiero a que no debe contener ninguna barra de desplazamiento) ... así que cuando tenga una gran cantidad de texto para poner, Necesito saber cuánto ocupa el texto en la pantalla para que quepa en la pantalla. –