Fokus in Textfeldern

Wenn Nutzer mit einer Hardwaretastatur, einem Steuerkreuz oder einem Drehsteller durch eine Compose-UI navigieren, werden Textfelder zusammen mit anderen Fokuszielen in die Fokusnavigation einbezogen.

Standardmäßig wird der Fokus nicht in Textfeldern festgehalten. Du musst keine benutzerdefinierten Schlüsselereignis-Handler (onKeyEvent oder onPreviewKeyEvent) hinzufügen, damit Nutzer ein Textfeld verlassen können. Nutzer können den Textbereich jederzeit mit Umschalttaste + Tabulatortaste oder mit den Richtungstasten verlassen.

KeyboardOptions kann verwendet werden, um eine intuitive Aktion für die Bildschirmtastatur bereitzustellen, die mit der Navigation über die Hardwaretastatur koordiniert wird. Mit ImeAction.Next wird der Fokus beispielsweise auf das nächste Fokusziel verschoben.

Eindimensionaler Fokuswechsel

Beim eindimensionalen Fokuswechsel hängt das Verhalten der Tabulatortaste von der für das Textfeld konfigurierten lineLimits ab:

  • Einzeilige Textfelder (TextFieldLineLimits.SingleLine) Wenn Sie die Tabulatortaste drücken, wird der Fokus auf das nächste Fokusziel in der Benutzeroberfläche verschoben.
  • Mehrzeilige Textfelder (TextFieldLineLimits.MultiLine() oder Standard): Wenn Sie die Tabulatortaste drücken, wird ein Tabulatorzeichen (\t) in den Textpuffer eingefügt, anstatt den Fokus zu verschieben.
  • Umgekehrte Navigation (Umschalttaste + Tabulatortaste): Wenn Sie die Umschalttaste + Tabulatortaste drücken, wird der Fokus sowohl in einzeiligen als auch in mehrzeiligen Textfeldern bedingungslos auf das vorherige Fokusziel zurückgesetzt.

// Single-line text field: Tab advances focus to the next focus target
BasicTextField(
    state = singleLineState,
    lineLimits = TextFieldLineLimits.SingleLine,
    modifier = Modifier.fillMaxWidth()
)

// Multi-line text field: Tab inserts '\t'; Shift + Tab moves to previous target
BasicTextField(
    state = multiLineState,
    lineLimits = TextFieldLineLimits.MultiLine(),
    modifier = Modifier.fillMaxWidth()
)

Zweidimensionaler Fokuswechsel

Wenn Sie die Pfeiltasten (oder ein Steuerkreuz) verwenden, bewegen die Richtungstasten zuerst den Textcursor (Einfügemarke) innerhalb des Textfelds:

  • Vertikale Navigation (nach oben / unten): Wenn Sie die Taste Down drücken, wird der Cursor Zeile für Zeile nach unten bewegt. Wenn der Cursor die letzte Zeile erreicht, wird der Fokus durch erneutes Drücken der Abwärtspfeiltaste auf das angrenzende Fokusziel unter dem Textfeld übertragen. Wenn Sie in der ersten Zeile die Aufwärtspfeiltaste drücken, wird der Fokus auf das vorherige Fokusziel verschoben.
  • Horizontale Navigation (links / rechts / Anfang / Ende): Wenn Sie die horizontalen Pfeiltasten drücken, wird der Cursor durch die Zeichen bewegt. Wenn der Cursor den Anfang oder das Ende des Textpuffers erreicht, wird der Fokus durch erneutes Drücken der Richtungstaste auf das angrenzende Fokusziel in dieser Richtung übertragen.

Textfelder auf Android TV

Auf Android TV mit Steuerkreuz-Controllern ohne physische Tastatur:

  1. Wenn der Fokus auf ein Textfeld verschoben wird, wird automatisch die Bildschirmtastatur angezeigt.
  2. Der Nutzer navigiert mit dem Steuerkreuz durch die Tasten der Bildschirmtastatur.
  3. Durch Drücken der Zurück-Taste wird die Bildschirmtastatur ausgeblendet, während der Fokus auf dem Textfeld bleibt.
  4. Sobald die Bildschirmtastatur ausgeblendet ist, wird der Fokus durch Drücken der Steuerkreuz-Richtungstasten auf benachbarte Fokussierungsziele auf dem Bildschirm verschoben.
  5. Wenn du ein zweites Mal auf den Button „Zurück“ drückst, wird die standardmäßige Rückwärtsnavigation des Systems ausgelöst.