Tengo una vista de texto que muestra el texto que cambia y ejecuta el tiempo. Quiero utilizar el método View.getLineCount() para ver cuántas líneas ocupa TextView y realizar diferentes funciones en consecuencia. El problema es que necesito determinar el número de líneas que ocupa TextView en el mismo método que necesita saber cuántas líneas ocupa. Intenté llamar a View.invalidate() entre las dos llamadas, pero eso no pareció arreglar nada. Me gustaría medir el número de líneas sin renderizar la vista, si es posible, pero si tuviera que renderizarla estaría dispuesto a hacerlo también. Avíseme si esto no es lo suficientemente específico e intentaré ser más específico. ¡Gracias!Android: Medir el tamaño de la vista antes de representar
Respuesta
Esto realmente puede ser un problema realmente complejo en Android. Si necesita saber en el momento en que configura el texto (es decir, antes de que la vista se represente o esté cerca de ser renderizada), su única opción real es usar StaticLayout. Si puede esperar hasta cerca del tiempo de render, se puede utilizar un viewTreeObserver:
yourTextView.getViewTreeObserver.addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout(){
yourTextView.getLineCount();
}
}
onGlobalLayout puede ser llamado varias veces y, a veces (por cualquier razón) he encontrado que las opiniones no están realmente dispuestas todavía, por lo deberías hacer un poco de registro y ver si puedes encontrar la manera de asegurarte de que el resultado que obtengas realmente tenga sentido (es decir, un conteo de líneas> 0).
StaticLayouts es una alternativa más complicada que debería poder darle el tamaño de su vista y número de líneas. Pueden requerir algunos ajustes para conseguir que funcione correctamente, y asegúrese de usar la pintura desde el punto de vista que estamos tratando de medir:
yourTextView.setText(newText);
//the last boolean should be true if you're using padding on your view
StaticLayout measure = new StaticLayout(yourTextView.getText(), yourTextView.getPaint(),
maxAvailableWidthForYourTextView, Layout.Alignment.ALIGN_NORMAL, 1.0f, 1.0f, false)
int numberOfLines = measure.getLineCount();
Si usted está dispuesto a (o ya tiene) una subclase de Vista de Texto, se puede anular onSizeChanged o onMeasure e intentar obtener el número de líneas allí. De nuevo, al igual que con el observador de árbol de vista, a veces se pueden invocar antes de que se haya medido realmente su vista, por lo que es posible que tenga que verificar para asegurarse de que el valor que obtenga en esos métodos tenga sentido.
- 1. Cómo representar visualmente el tamaño del archivo
- 2. ¿Cómo medir el consumo de VRAM en Android?
- 3. ¿Cómo medir el tamaño de un objeto Ruby?
- 4. Medir el tamaño de las bibliotecas en Linux
- 5. Cómo configurar el tamaño de la vista de superficie personalizada
- 6. Android: obteniendo el tamaño de archivo de la imagen antes de compartirla (Intent.ACTION_SEND)
- 7. Android: mapa de bits de vista de gran tamaño
- 8. Android: cambiar el tamaño de la vista de la imagen en XML
- 9. Tamaño del elemento de vista de lista única android
- 10. Android: calcular el tamaño de la vista en el interior MyAdapter :: getView
- 11. Cambio de tamaño de la vista previa de la cámara
- 12. midiendo una vista antes de representarla
- 13. Vista eliminada antes de cargar
- 14. La vista de desplazamiento no cambia de tamaño cuando cambia el contenido de la vista infantil
- 15. ¿Cómo cambiar el tamaño de la imagen en Android?
- 16. Determinar el tamaño del estado de visualización de la página ASP.NET antes de publicar la página
- 17. Cómo medir FPS en Android durante el desarrollo de aplicaciones
- 18. cómo reducir el tamaño de la imagen grande al tamaño de la miniatura en android
- 19. ¿Cómo encontrar el ancho de una vista antes de que se muestre la vista?
- 20. Cambiar la vista de Android
- 21. PhoneGap: ¿Hay alguna manera de evitar que el teclado cambie el tamaño de la vista?
- 22. ¿Cómo maneja Android las diferencias entre el tamaño/relación de vista previa y el tamaño real de SufaceView?
- 23. ¿Cómo cambiar el tamaño de la vista en XIB?
- 24. ¿Podemos cambiar el tamaño de la vista UIDatePicker en iPhone
- 25. ¿Cómo saber el tamaño de un archivo antes de descargarlo?
- 26. UIModalPresentationFormSheet cambio de tamaño vista
- 27. Obtener el tamaño del archivo de carga antes de cargar
- 28. Tamaño máximo de fuente que puede representar una página
- 29. Obteniendo el tamaño real de UserControl antes de renderizar
- 30. Comprobación del tamaño de descarga antes de la descarga