In einigen Nutzerflows muss der Fokus in Ihrer Anwendung explizit auf eine bestimmte Komponente verschoben werden. Wenn ein Nutzer beispielsweise auf die Schaltfläche „Suchen“ klickt, soll der Fokus automatisch auf das Such-Eingabefeld gesetzt werden.
FocusRequester verwenden
So fordern Sie den Fokus explizit an:
FocusRequester-Instanz erstellen und speichern:val focusRequester = remember { FocusRequester() }.- Hängen Sie
FocusRequestermithilfe des ModifikatorsfocusRequesteran die Ziel-Composable an. - Rufen Sie
requestFocus()in einem Ereignis-Callback (z. B.onClick) oder einem Coroutine-Bereich auf.
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") }
Fokus auf den Startbildschirm festlegen
Wenn Sie den anfänglichen Fokus auf eine bestimmte Komponente legen möchten, wenn ein Bildschirm zum ersten Mal angezeigt wird, lösen Sie requestFocus() in einem LaunchedEffect(Unit) aus:
LaunchedEffect(Unit) {
focusRequester.requestFocus()
}
Wenn Sie zwischen Containern wechseln oder von einem anderen Bildschirm zurückkehren, können Sie focusRestorer() auch an übergeordnete Container anhängen, um den Fokus automatisch auf das zuletzt fokussierte untergeordnete Element zurückzusetzen.
Weitere Informationen finden Sie im Leitfaden zum Wiederherstellen des Fokus.
Empfehlungen für Sie
- Hinweis: Linktext wird angezeigt, wenn JavaScript deaktiviert ist
- Fokusziele
- Fokusziele für Gruppen
- Fokus wiederherstellen
- Fokus verschieben und löschen