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.
Utilizzare FocusRequester
Per richiedere esplicitamente la messa a fuoco:
- Crea e memorizza un'istanza
FocusRequester:val focusRequester = remember { FocusRequester() }. - Collega
FocusRequesteral componibile di destinazione utilizzando il modificatorefocusRequester. - Chiama
requestFocus()all'interno di un callback dell'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") }
Impostare lo stato attivo della schermata iniziale
Per impostare lo stato attivo iniziale su un componente specifico quando viene visualizzata una schermata,
attiva requestFocus() all'interno di un LaunchedEffect(Unit):
LaunchedEffect(Unit) {
focusRequester.requestFocus()
}
Quando navighi tra i contenitori o torni da un'altra schermata,
puoi anche collegare focusRestorer() ai contenitori principali
per riportare automaticamente lo stato attivo sull'ultimo elemento secondario selezionato.
Per ulteriori informazioni, consulta la guida Ripristinare la messa a fuoco.
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- Target di messa a fuoco
- Target di messa a fuoco del gruppo
- Ripristinare la messa a fuoco
- Spostare e cancellare lo stato attivo