Estoy agregando una serie de vistas personalizadas a LinearLayout. He reemplazado el método onMeasure de estas vistas personalizadas, para devolver las dimensiones según ciertos parámetros. Según la entrada del usuario, me gustaría cambiar estos parámetros para cambiar el tamaño de las vistas. ¿Cómo puedo forzar a LinearLayout a "rediseñar" sus hijos para reflejar las nuevas dimensiones?En Android, ¿cómo volver a diseñar vistas?
11
A
Respuesta
22
Oh ... linearLayout.requestLayout().
5
mi caso es que necesito volver a enviar a todos los niños inmediatamente. requestLayout() no lo hace de inmediato.
Para aquellos que tienen el mismo requisito conmigo:
Esto obligará a la redistribución niños de la vista inmediatamente (dado que la propia anchura y la altura de la vista no tiene que cambiar)
private void reLayoutChildren(View view) {
view.measure(
View.MeasureSpec.makeMeasureSpec(view.getMeasuredWidth(), View.MeasureSpec.EXACTLY),
View.MeasureSpec.makeMeasureSpec(view.getMeasuredHeight(), View.MeasureSpec.EXACTLY));
view.layout(view.getLeft(), view.getTop(), view.getRight(), view.getBottom());
}
+0
Esta es la única solución que funcionó para mí. 'invalidate' y' requestLayout' simplemente no lo harían, ¡así que gracias por este consejo! –
Cuestiones relacionadas
- 1. ¿Volver a calcular ScrollView en diferentes vistas de ViewFlipper?
- 2. Android - Volver a llamar Actividad
- 3. Vistas superpuestas en Android
- 4. Cómo actualizar un ListView para volver a consultar su cursor para volver a llenar sus datos y sus vistas
- 5. Accediendo a vistas desde otro hilo (Android)
- 6. Cómo agregar vistas a vistas mediante programación
- 7. Android - Actividades vs Vistas
- 8. android volver a la primera pantalla
- 9. Cómo aprender a diseñar aplicaciones en Java
- 10. diseño Android: vistas cuadráticas
- 11. PHP MVC - ¿Cómo diseñar?
- 12. vistas de pruebas que utilizan CanCan y diseñar con RSpec
- 13. Android: ¿Cómo volver a dibujar un elemento gráfico?
- 14. Android Arrastra/Animación de Vistas
- 15. Android cómo diseñar un SearchView en la barra de acciones?
- 16. ¿Adjunta múltiples oyentes a las vistas en Android?
- 17. ¿Debo volver a usar la vista de modelos en diferentes vistas?
- 18. Android: actividad única, vistas múltiples
- 19. ¿Cómo guardar en caché las vistas en Android?
- 20. ¿Puedo agregar vistas a una vista de desplazamiento sin inflar/volver a inflar diseños?
- 21. Android: Galería de vistas web
- 22. Android & RoboGuice - ¿Inyectar vistas en Fragment?
- 23. ¿Cómo volver a colocar MediaController?
- 24. Cómo volver a habilitar event.preventDefault?
- 25. ¿Cómo volver a cargar gdbinit?
- 26. ¿Cómo volver a cargar TreeStore?
- 27. ¿Cómo comienzas a diseñar un sistema grande?
- 28. Cómo volver a preludio> en ghci
- 29. Cómo volver a incluir encabezado en aplicación
- 30. Android: Acceda a vistas secundarias desde un ListView
También puedes ver invalidate() – Thomas
invalidate() no fue útil. No funcionó, supongo que porque la invalidación de un diseño obliga a todos los niños a volver a dibujarse, pero en realidad no cambia el tamaño ni retransmite los elementos secundarios. – ab11
En la tableta Android OS 4.x (ICS), el relayouting no me ayudó. Lo que sí ayudó, fue eliminar 'getWindow(). RequestFeature (Window.FEATURE_NO_TITLE);' –