Когда пользователи перемещаются по интерфейсу Compose с помощью аппаратной клавиатуры, D-pad или поворотного контроллера, текстовые поля участвуют в навигации по фокусу наряду с другими объектами фокусировки.
По умолчанию фокус не фиксируется в текстовых полях. Вам не нужно добавлять пользовательские обработчики событий клавиш ( onKeyEvent или onPreviewKeyEvent ), чтобы позволить пользователям покинуть текстовое поле. Пользователи всегда могут выйти из поля, используя Shift+Tab или переходя за границы текста с помощью клавиш управления направлением.
KeyboardOptions позволяет задать интуитивно понятное действие программной клавиатуры, которое синхронизируется с навигацией аппаратной клавиатуры. Например, ImeAction.Next перемещает фокус на следующую целевую точку.
Одномерное перемещение фокуса
При одномерном перемещении фокуса поведение клавиши Tab зависит от параметра lineLimits , заданного для текстового поля:
- Однострочные текстовые поля (
TextFieldLineLimits.SingleLine). Нажатие клавиши Tab перемещает фокус на следующий целевой объект в пользовательском интерфейсе. - Многострочные текстовые поля (
TextFieldLineLimits.MultiLine()или значение по умолчанию) : Нажатие клавиши Tab вставляет символ табуляции (\t) в текстовый буфер вместо перемещения фокуса. - Обратная навигация ( Shift+Tab ) : Нажатие Shift+Tab безусловно перемещает фокус назад к предыдущему целевому объекту как в однострочных, так и в многострочных текстовых полях.
// 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() )
Двумерное перемещение фокуса
При использовании клавиш со стрелками (или D-pad) клавиши направления сначала перемещают текстовый курсор (карет) в текстовом поле:
- Вертикальная навигация (вверх/вниз) : Нажатие клавиши
Downперемещает курсор вниз построчно. Когда курсор достигает последней строки, повторное нажатие клавиши «Вниз» переводит фокус на соседний объект под текстовым полем. Нажатие клавиши «Вверх» на первой строке переводит фокус на предыдущий объект. - Горизонтальная навигация (влево / вправо / начало / конец) : Нажатие клавиш со стрелками по горизонтали перемещает курсор по символам. Когда курсор достигает начала или конца текстового буфера, повторное нажатие клавиши направления переводит фокус на соседний целевой объект в этом направлении.
Текстовые поля на Android TV
На Android TV использование D-pad контроллеров без физической клавиатуры:
- При перемещении фокуса на текстовое поле автоматически отображается экранная программная клавиатура.
- Пользователь управляет клавишами программной клавиатуры с помощью D-pad.
- Нажатие кнопки «Назад» закрывает программную клавиатуру, сохраняя при этом фокус на текстовом поле.
- После закрытия программной клавиатуры нажатие клавиш направления на D-pad перемещает фокус на соседние объекты на экране.
- Повторное нажатие кнопки «Назад» активирует стандартную системную навигацию назад.
Рекомендуем вам
- Примечание: текст ссылки отображается, когда JavaScript отключен.
- Целевые показатели
- Порядок перемещения фокуса
- Целевые показатели фокусировки группы
- Тестирование навигации по фокусу