Um alvo de foco é um elemento da interface para que o foco do teclado pode se mover. Os usuários podem mover o foco do teclado com a tecla Tab ou as teclas direcionais (setas):
- Tab ou Shift+Tab: move o foco para frente ou para trás na ordem de aparência unidimensional.
- Teclas direcionais: movem o foco em duas dimensões (Para cima, Para baixo, Para a esquerda e Para a direita).
Os elementos da interface interativos são alvos de foco por padrão
Um componente interativo é alvo de foco por padrão. Em outras palavras, um elemento da interface é um alvo de foco se os usuários podem tocar ou clicar nele.
Por exemplo, considere três componentes Card. Se o primeiro e o terceiro cards forem
interativos (definirem um callback onClick), mas o segundo for puramente
informativo (não tiver processamento de cliques), pressionar a tecla Tab no primeiro card
vai pular o segundo e avançar diretamente para o terceiro.
Card(onClick = { /* First card action */ }) { Text("Card 1 (Interactive)") } Card { Text("Card 2 (Informational - not focusable)") } Card(onClick = { /* Third card action */ }) { Text("Card 3 (Interactive)") }
Para tornar o segundo card um alvo de foco, forneça um parâmetro
onClick:
Card(onClick = { /* Second card action */ }) { Text("Card 2 (Now interactive and focusable)") }
O modificador clickable também transforma elementos da interface personalizados ou padrão em alvos de foco. Consulte Tocar e pressionar para mais detalhes.
Box( modifier = Modifier .clickable { /* Handle click */ } ) { Text("Custom interactive element") }
Tornar um elemento combinável um destino de foco não clicável
O modificador focusable torna um elemento combinável um alvo de foco sem exigir
semântica de clique. Os usuários podem mover o foco do teclado para o elemento combinável modificado (por
exemplo, para inspecionar o conteúdo com ferramentas de acessibilidade ou rolar a janela de visualização),
mas pressionar as teclas Enter ou Espaço
não aciona uma ação de clique:
Box( modifier = Modifier .focusable() ) { Text("Non-clickable focus target") }
Tornar um elemento combinável não focalizável
Em alguns cenários, talvez você queira excluir um elemento interativo da navegação
por teclado sem desativar os eventos de ponteiro ou clique. Para impedir que um
componente receba foco, defina canFocus = false dentro do
modificador focusProperties:
var checked by remember { mutableStateOf(false) } Switch( checked = checked, onCheckedChange = { checked = it }, // Prevent component from being focused modifier = Modifier .focusProperties { canFocus = false } )
Recomendados para você
- Observação: o texto do link aparece quando o JavaScript está desativado.
- Ordem de apresentação do foco
- Foco em campos de texto
- Agrupar alvos de foco
- Indicar o estado de foco
- Testar a navegação de foco