Em alguns fluxos de usuários, o aplicativo precisa mover explicitamente o foco para um componente específico. Por exemplo, quando um usuário clica em um botão "Pesquisar", talvez você queira colocar o foco automaticamente no campo de entrada de pesquisa.
Usar FocusRequester
Para solicitar o foco explicitamente:
- Crie e lembre-se de uma instância
FocusRequester:val focusRequester = remember { FocusRequester() }. - Anexe o
FocusRequesterao elemento combinável de destino usando o modificadorfocusRequester. - Chame
requestFocus()em um callback de evento (comoonClick) ou um escopo de corrotina.
val focusRequester = remember { FocusRequester() } var text by remember { mutableStateOf("") } TextField( value = text, onValueChange = { text = it }, modifier = Modifier.focusRequester(focusRequester) )
val focusRequester = remember { FocusRequester() } var text by remember { mutableStateOf("") } TextField( value = text, onValueChange = { text = it }, modifier = Modifier.focusRequester(focusRequester) ) Button(onClick = { focusRequester.requestFocus() }) { Text("Request focus on TextField") }
Definir o foco inicial da tela
Para colocar o foco inicial em um componente específico quando uma tela aparece pela primeira vez, acione requestFocus() dentro de um LaunchedEffect(Unit):
LaunchedEffect(Unit) {
focusRequester.requestFocus()
}
Ao navegar entre contêineres ou retornar de outra tela,
você também pode anexar focusRestorer() a contêineres principais
para retornar automaticamente o foco ao último filho em foco.
Para mais informações, consulte o guia Restaurar o foco.
Recomendados para você
- Observação: o texto do link aparece quando o JavaScript está desativado.
- Segmentações por foco
- Agrupar alvos de foco
- Restaurar o foco
- Mover e limpar o foco