Quando gli utenti navigano in un'interfaccia utente di composizione con una tastiera hardware, un D-pad o un controller rotativo, i campi di testo partecipano alla navigazione a selezione insieme ad altri target di selezione.
Per impostazione predefinita, lo stato attivo non è bloccato nei campi di testo. Non devi aggiungere gestori di eventi chiave personalizzati (onKeyEvent o onPreviewKeyEvent) per consentire agli utenti di uscire da un campo di testo. Gli utenti possono sempre uscire utilizzando Maiusc+Tab o spostandosi oltre
i limiti del testo con i tasti direzionali.
KeyboardOptions può essere utilizzato per fornire un'azione intuitiva della tastiera su schermo
che si coordina con la navigazione da tastiera hardware.
ImeAction.Next sposta lo stato attivo sul target successivo, ad esempio.
Attraversamento della messa a fuoco unidimensionale
Nella navigazione con lo stato attivo unidimensionale,
il comportamento del tasto Tab dipende dal
lineLimits configurato nel campo di testo:
- Campi di testo a una riga (
TextFieldLineLimits.SingleLine) Premendo il tasto Tab, lo stato attivo di selezione si sposta sul successivo target di selezione nell'interfaccia utente. - Campi di testo su più righe (
TextFieldLineLimits.MultiLine()o predefinito): Premendo il tasto Tab viene inserito un carattere di tabulazione (\t) nel buffer di testo anziché spostare lo stato attivo. - Navigazione inversa (Maiusc+Tab): Premendo Maiusc+Tab, lo stato attivo viene spostato indietro sul target di stato attivo precedente nei campi di testo a una o più righe.
// 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() )
Spostamento del focus bidimensionale
Quando utilizzi i tasti freccia (o un D-pad), i tasti direzionali spostano prima il cursore del testo all'interno del campo di testo:
- Navigazione verticale (su / giù):
Se premi il tasto
Down, il cursore si sposta verso il basso riga per riga. Quando il cursore del testo raggiunge l'ultima riga, se premi di nuovo il tasto Freccia giù, lo stato attivo viene trasferito al target di selezione adiacente sotto il campo di testo. Se premi il tasto Su sulla prima riga, lo stato attivo viene spostato sul target di messa a fuoco precedente. - Navigazione orizzontale (sinistra / destra / inizio / fine): premendo i tasti freccia orizzontale, il cursore del testo si sposta tra i caratteri. Quando il cursore raggiunge l'inizio o la fine del buffer di testo, se premi di nuovo il tasto direzionale, lo stato attivo viene trasferito alla destinazione dello stato attivo adiacente in quella direzione.
Campi di testo su Android TV
Su Android TV, utilizzando i controller D-pad senza una tastiera fisica:
- Quando lo stato attivo passa a un campo di testo, viene visualizzata automaticamente la tastiera su schermo.
- L'utente naviga tra i tasti della tastiera su schermo utilizzando il D-pad.
- Se premi il pulsante Indietro, la tastiera su schermo viene chiusa e lo stato attivo rimane sul campo di testo.
- Una volta chiusa la tastiera software, se premi i tasti direzionali del D-pad, lo stato attivo si sposta sugli elementi attivi vicini sullo schermo.
- Se premi una seconda volta il pulsante Indietro, si attiva la navigazione a ritroso standard del sistema.
Consigliati per te
- Nota: il testo del link viene visualizzato quando JavaScript è disattivato
- Target di messa a fuoco
- Ordine di attraversamento del focus
- Target di messa a fuoco del gruppo
- Testare la navigazione con la messa a fuoco