Im Abschnitt Standardreihenfolge des Fokusdurchlaufs wurde beschrieben, wie die Funktion „Schreiben“
wird automatisch das Verhalten beim Fokusdurchlauf zu Ihren Elementen hinzugefügt.
eindimensionale Navigation (Taste tab
) und zweidimensionale Navigation (Pfeiltasten) In einigen
müssen Sie dieses Standardverhalten
unter Umständen außer Kraft setzen,
zur erforderlichen Durchlaufreihenfolge.
Eindimensionale Durchlaufreihenfolge überschreiben
Um die Standardreihenfolge des Fokusdurchlaufs für die eindimensionale Navigation zu ändern, erstellen Sie eine Reihe von Referenzen, eine für jede fokussierbare zusammensetzbare Funktion:
val (first, second, third, fourth) = remember { FocusRequester.createRefs() }
Verwenden Sie dann den focusRequester
-Modifikator, um jedes Element mit einem
zusammensetzbar:
Column { Row { TextButton({}, Modifier.focusRequester(first)) { Text("First field") } TextButton({}, Modifier.focusRequester(third)) { Text("Third field") } } Row { TextButton({}, Modifier.focusRequester(second)) { Text("Second field") } TextButton({}, Modifier.focusRequester(fourth)) { Text("Fourth field") } } }
Sie können jetzt den Modifikator focusProperties
verwenden, um eine benutzerdefinierte Durchquerungsreihenfolge anzugeben:
Column { Row { TextButton( {}, Modifier .focusRequester(first) .focusProperties { next = second } ) { Text("First field") } TextButton( {}, Modifier .focusRequester(third) .focusProperties { next = fourth } ) { Text("Third field") } } Row { TextButton( {}, Modifier .focusRequester(second) .focusProperties { next = third } ) { Text("Second field") } TextButton( {}, Modifier .focusRequester(fourth) .focusProperties { next = first } ) { Text("Fourth field") } } }
Zweidimensionale Durchlaufreihenfolge überschreiben
Es ist auch möglich, die Reihenfolge des Fokusdurchlaufs detailliert zu steuern.
für die zweidimensionale Navigation mit den Pfeiltasten. Für jedes Element können Sie
das standardmäßige Navigationsziel für jede der Routen durch Hinzufügen
den focusProperties
-Modifikator und geben das erscheinende Element an.
oder in eine andere Richtung:
TextButton( onClick = {}, modifier = Modifier .focusRequester(fourth) .focusProperties { down = third right = second } ) {}
Bei dieser Technik werden nicht nur effektiv Tastaturpfeile verwendet, sondern auch Steuerkreuze und Sticks an kabelgebundenen und kabellosen Controllern
Empfehlungen für dich
- Hinweis: Der Linktext wird angezeigt, wenn JavaScript deaktiviert ist.
- Fokusverhalten ändern
- Fokus auf „Schreiben“