Focar no Compose

Quando os usuários interagem com seu app, eles geralmente usam mecanismos de entrada sem toque:

  • Ambientes de computador: os usuários navegam e inserem dados com teclados de hardware e trackpads físicos.
  • Android TV: os usuários navegam pela interface usando o botão direcional.
  • Automotivo: motoristas e passageiros interagem usando controles giratórios.
  • Dispositivos dobráveis e tablets: os usuários conectam capas de teclado e acessórios de entrada externos.

Em todos esses cenários, o app precisa rastrear qual elemento interativo está ativo na tela. Esse estado ativo é chamado de foco.

Principais fatores para uma navegação intuitiva pelo teclado

Para oferecer uma ótima experiência do usuário em telas grandes e dispositivos sem toque, crie seu app com os seguintes princípios:

  1. Foco inicial lógico: coloque o foco inicial no elemento com que os usuários têm mais probabilidade de interagir ao entrar em uma tela.
  2. Ordem de navegação consistente: ofereça travessia de foco unidimensional (Tab) e bidimensional (teclas de seta ou D-pad) previsível.
  3. Foco persistente: restaure o foco sem problemas após interrupções, dispensas de caixa de diálogo ou mudanças de configuração.
  4. Estado de foco claro: mostre indicadores visuais acessíveis e em destaque (como anéis ou ondulações de foco) que indicam qual elemento está em foco.
  5. Rolagem intuitiva: garanta que o elemento em foco e o contexto ao redor rolem suavemente para a janela de visualização visível.

Guias de foco

Confira os guias a seguir para saber como gerenciar e personalizar o foco no Compose:

  • Alvos de foco: aprenda como os componentes interativos se tornam alvos de foco e como tornar focalizáveis elementos combináveis personalizados.
  • Ordem de apresentação do foco: entenda a ordem de aparência 1D e a navegação espacial 2D, além de como personalizar os caminhos de apresentação.
  • Foco em campos de texto: saiba como os campos de texto de uma e várias linhas processam as teclas Tab e de seta, e como funciona a interação com o IME da TV.
  • Agrupar alvos de foco: agrupe componentes com focusGroup e intercepte o redirecionamento de entrada ou saída.
  • Restaurar o foco: restaure o foco em filhos ativos anteriormente em containers, processe componentes de navegação e gerencie o foco nas transições de tela.
  • Indicar estado de foco: aplique dicas visuais e indicação personalizada para destacar componentes em foco.
  • Reagir ao foco: observe as mudanças de foco e consulte as propriedades de estado do foco usando onFocusChanged.
  • Solicitar foco de forma programática: mova o foco explicitamente em resposta a ações do usuário ou erros de validação.
  • Mover e limpar o foco: avance ou limpe o foco de forma programática usando FocusManager.
  • Capturar e liberar o foco: capture o foco para subinterações modais e libere-o com segurança.
  • Testar a navegação por foco: escreva testes automatizados do Compose para verificar interações de teclado em campos de texto e em 1D e 2D.