Saltar al contenido
CrossFly es 100% open sourceSíguenos en GitHub
CrossFlyCrossFly
Empezar

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; reserva ofPixels para casos genuinamente fijos. Un pixel fijo es una apuesta a que la pantalla nunca cambia — y siempre cambia.

Ver también

¿Te resultó útil esta página?