Quando os usuários navegam em uma interface do Compose com um teclado físico, um direcional ou um controle giratório, os campos de texto participam da navegação por foco junto com outros destinos de foco.
Por padrão, o foco não fica preso em campos de texto. Não é necessário adicionar manipuladores de eventos de tecla personalizados (onKeyEvent ou onPreviewKeyEvent) para permitir que os usuários saiam de um campo de texto. Os usuários podem sair usando Shift+Tab ou navegando além dos limites do texto com as teclas direcionais.
O KeyboardOptions pode ser usado para fornecer uma ação intuitiva do teclado de software
que coordena com a navegação do teclado de hardware.
ImeAction.Next move o foco para o próximo alvo, por exemplo.
Transição de foco unidimensional
Na transição de foco unidimensional,
o comportamento da tecla Tab depende do
lineLimits configurado no campo de texto:
- Campos de texto de uma única linha (
TextFieldLineLimits.SingleLine) Ao pressionar a tecla Tab, o foco é movido para o próximo alvo de foco na interface. - Campos de texto de várias linhas (
TextFieldLineLimits.MultiLine()ou padrão): pressionar a tecla Tab insere um caractere de tabulação (\t) no buffer de texto em vez de mover o foco. - Navegação inversa (Shift+Tab): ao pressionar Shift+Tab, o foco é movido para trás para o destino de foco anterior em campos de texto de uma ou várias linhas.
// Single-line text field: Tab advances focus to the next focus target BasicTextField( state = singleLineState, lineLimits = TextFieldLineLimits.SingleLine, modifier = Modifier.fillMaxWidth() ) // Multi-line text field: Tab inserts '\t'; Shift + Tab moves to previous target BasicTextField( state = multiLineState, lineLimits = TextFieldLineLimits.MultiLine(), modifier = Modifier.fillMaxWidth() )
Transição de foco bidimensional
Ao usar as teclas de seta (ou um botão direcional), as teclas direcionais primeiro movem o cursor de texto (circunflexo) no campo de texto:
- Navegação vertical (para cima / para baixo):
Pressionar a tecla
Downmove o cursor de texto para baixo, linha por linha. Quando o cursor de texto chega à última linha, pressionar a tecla Para baixo novamente transfere o foco para o alvo adjacente abaixo da caixa de texto. Ao pressionar a tecla Para cima na primeira linha, o foco é movido para o alvo anterior. - Navegação horizontal (esquerda / direita / início / fim): pressionar as teclas de seta horizontal move o cursor de texto pelos caracteres. Quando o cursor de texto chega ao início ou ao fim do buffer de texto, pressionar a tecla direcional novamente transfere o foco para o alvo adjacente nessa direção.
Campos de texto no Android TV
No Android TV, usando controles de botão direcional sem um teclado físico:
- Mover o foco para um campo de texto mostra automaticamente o teclado de software na tela.
- O usuário navega pelas teclas do teclado de software usando o botão direcional.
- Ao pressionar o botão Voltar, o teclado de software é dispensado mantendo o foco no campo de texto.
- Depois que o teclado de software é dispensado, pressionar as teclas direcionais do botão direcional move o foco para alvos de foco vizinhos na tela.
- Pressionar o botão Voltar uma segunda vez aciona a navegação de retorno padrão do sistema.
Recomendados para você
- Observação: o texto do link aparece quando o JavaScript está desativado.
- Segmentações por foco
- Ordem de apresentação do foco
- Agrupar alvos de foco
- Testar a navegação por foco