In einigen User-Flows muss Ihre Anwendung den Fokus explizit auf eine bestimmte Komponente verschieben. Wenn ein Nutzer beispielsweise auf die Schaltfläche „Suchen“ klickt, möchten Sie möglicherweise den Fokus automatisch auf das Sucheingabefeld legen.
FocusRequester verwenden
So fordern Sie den Fokus explizit an:
- Erstellen Sie eine
FocusRequester-Instanz und merken Sie sich diese:val focusRequester = remember { FocusRequester() }. - Hängen Sie die
FocusRequestermit dem ModifikatorfocusRequesteran die Ziel-Composable an. - Rufen Sie
requestFocus()in einem Ereignis-Callback (z. B.onClick) oder einem Koroutinenbereich 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 Startbildschirm festlegen
Wenn Sie den Fokus beim ersten Erscheinen eines Bildschirms auf eine bestimmte Komponente legen möchten, lösen Sie requestFocus() innerhalb eines 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 Fokus wiederherstellen.
Empfehlungen für Sie
- Hinweis: Der Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- Fokusziele
- Fokusziele für Gruppen
- Fokus wiederherstellen
- Fokus verschieben und löschen