# Accesibilidad (a11y)

> Objetivos táctiles generosos, contraste, texto que escala y feedback multisensorial en CrossFly.

Source: https://crossfly.dev/es/docs/best-practices/acessibilidade — CrossFly documentation. Full docs as one file: https://crossfly.dev/llms-full.txt

# Accesibilidad (a11y)

Con honestidad sobre lo que el framework ofrece hoy: foco en lo que es **accionable** en CrossFly
nativo/OpenGL. Buena parte de la a11y aquí **refuerza la responsividad** — fuente-relativo es respeto al
ajuste de tamaño del usuario.

## Objetivos táctiles generosos
Dimensiona las áreas táctiles con `Relative`, nunca píxeles minúsculos:
```java
botao.getStyle().autoHeight(Relative.ofFont(2.5f));            // alto suficiente para el dedo
icone.getStyle().autoWidth(Relative.ofScreen(0.12f, ScreenSize.MIN))
     .autoHeight(Relative.ofScreen(0.12f, ScreenSize.MIN));   // cuadrado que se adapta
```
Regla práctica: objetivos de ~48 dp equivalentes — `Relative.ofFont(2.5f)` suele ser suficiente.

## Contraste de texto
Garantiza un contraste adecuado; el framework ayuda:
```java
int fundo  = cs.surface.color();
int texto  = ColorUtils.contrastText(fundo);                  // negro/blanco según el fondo
int melhor = ColorUtils.getContrastColor(fundo, 0xFF000000, 0xFFFFFFFF);  // elige entre 2 opciones
```
Respeta el tema claro/oscuro (vía `Styles.setColorScheme`/`setDarkMode`) — no fijes colores que ignoren
el modo (ver [Modo claro/oscuro](/docs/ui/theming/dark-mode)).

## Texto que escala
Como las fuentes se miden en unidades relativas, **texto y layout escalan** con el zoom de fuente de la
app — consecuencia directa de usar `Relative.ofFont(...)` y evitar píxeles fijos. Deja que el `Label`
haga salto de línea; **no truncas** información esencial.

## Feedback multisensorial y voz
```java
Device.vibrate(50);            // confirmación táctil de una acción importante
Device.beep();                 // aviso sonoro
Device.textToVoice(mensagem);  // lectura por voz (apoyo)
```
Úsalo como **apoyo**, no como único canal — combina visual + táctil/sonoro.

## Buenas prácticas
- Objetivos táctiles con `Relative.ofFont`/`ofScreen(MIN)`; nada de botones de pocos píxeles.
- Contraste vía `contrastText`/`getContrastColor`; honra claro/oscuro.
- No truncas texto esencial; deja que escale/salte de línea.

## Errores comunes
- Botones/íconos minúsculos en píxeles fijos (difíciles de tocar; no escalan).
- Colores fijos que rompen el contraste en modo oscuro.
- Depender solo del color para transmitir estado (agrega ícono/texto).

## Limitaciones
Las funciones de **lector de pantalla** dependen de la plataforma/launcher — no hay una capa de a11y semántica
universal en el core. Prioriza los ítems accionables de arriba.

## Ver también
- [Responsividad](/docs/best-practices/responsividade) · [Modo claro/oscuro](/docs/ui/theming/dark-mode) · Colores (Cap. 11)
