Esta página fue traducida automáticamente del portugués y puede contener errores. La versión en portugués es la canónica.
Layout y el modelo Relative
CrossFly es relativo por defecto, no absoluto. Entender esto explica por qué tus pantallas se adaptan solas a tamaños, densidades y rotaciones diferentes.
El contrato de layout
Cada container delega la organización de los hijos a un Layout. El ciclo, en cascada, es siempre:
medir → posicionar → propagar onLayout a los hijos.
Cuando el layout se invalida (cambió el tamaño, el contenido, la rotación), el framework rehace ese ciclo a
partir de la raíz. Tú no recalculas posiciones a mano — declaras la intención y el Layout la resuelve.
El espectro de layouts (por intención)
- Apilar (vertical/horizontal) →
VerticalLayout/HorizontalLayout - Cuadrícula por fracción →
GridLayout - Anclar un componente a otro →
RelativeLayout - Espaciar uniformemente →
EvenlySpacedLayout - Posición libre →
RandomLayout
Cambiar el Layout de un container cambia la disposición sin tocar los hijos — es esto lo que hace trivial la respuesta a
la rotación. (How-to en Layouts.)
El corazón conceptual: Relative
Los tamaños y posiciones no son pixels fijos — son relaciones. Las cuatro formas:
| Forma | Significado | Escala con |
|---|---|---|
Relative.ofFont(1.5f) |
fracción de la altura de la fuente | el zoom/densidad de la UI |
Relative.ofScreen(0.8f[, ScreenSize]) |
fracción de la pantalla | el tamaño de la pantalla / orientación |
LAY_FILL / LAY_AUTO / fracción |
fracción del container | el tamaño del padre |
Relative.ofPixels(24f) |
pixel absoluto | nada (usar por excepción) |
Y el Gap (padding ingap / margen outgap) sigue la misma lógica: Gap.ofFont(...) escala junto.
// header (altura de contenido), contenido (absorbe la sobra), footer (contenido) — en VerticalLayout:
tela.add(LAY_AUTO, header);
tela.add(LAY_FILL, conteudo); // el "elástico"
tela.add(LAY_AUTO, footer);
Por qué esto es la base de la responsividad
Si no hay pixels fijos esparcidos, el framework puede recalcular todo en cada resize, rotación o cambio de escala — y la pantalla simplemente se readapta. La responsividad no es un recurso aparte: es consecuencia de medir por relaciones.
Regla de oro: escribe los tamaños como
Relative/fracciones/LAY_FILL; reservaofPixelspara casos genuinamente fijos. Un pixel fijo es una apuesta a que la pantalla nunca cambia — y siempre cambia.
Ver también
- Aplicar: Layouts · Responsividad
- Siguiente: Estilos y temas