In alcuni flussi utente, l'applicazione deve spostare esplicitamente lo stato attivo su un componente specifico. Ad esempio, quando un utente fa clic su un pulsante "Cerca", potresti voler spostare automaticamente lo stato attivo sul campo di immissione della ricerca.
Utilizza FocusRequester
Per richiedere esplicitamente lo stato attivo:
- Crea e memorizza un'istanza
FocusRequester:val focusRequester = remember { FocusRequester() }. - Collega
FocusRequesteral composable di destinazione utilizzando il modificatorefocusRequester. - Chiama
requestFocus()all'interno di un callback di evento (ad esempioonClick) o di un ambito di coroutine.
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") }
Imposta lo stato attivo iniziale dello schermo
Per impostare lo stato attivo iniziale su un componente specifico quando viene visualizzata una schermata per la prima volta,
attiva requestFocus() all'interno di un LaunchedEffect(Unit):
LaunchedEffect(Unit) {
focusRequester.requestFocus()
}
Quando navighi tra i container o torni da un'altra schermata,
puoi anche collegare focusRestorer() ai container principali
per riportare automaticamente lo stato attivo all'ultimo elemento secondario attivo.
Per saperne di più, consulta la guida Ripristina lo stato attivo.
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- Target di messa a fuoco
- Target di interesse del gruppo
- Ripristina la messa a fuoco
- Spostare e cancellare lo stato attivo