Почему Android webview показывает «Next» на клавиатуре, только если type =»number», а не с type =»text»?

#android #keyboard

#Android #клавиатура

Вопрос:

У меня есть форма с несколькими полями ввода. Итак, я хочу перемещаться между полями с помощью кнопки next, но это работает только тогда, когда тип поля ввода равен «number». С type =»text» это не так!

Это ошибка в Android 3.2.1?

Мои поля ввода такие:

 <input type="text" name="..." .... /> --> keyboard "Go"
<input type="text" name="..." .... /> --> keyboard "Go"
<input type="number" name="..." .... /> --> here it shows the "Next" button on the keyboard
<input type="text" name="..." .... /> --> keyboard "Go"
  

Ответ №1:

DennisA подходит для Android 4.0 и ниже.

Короче говоря, это не ошибка, а, к сожалению, то, как Google ее реализовал (я бы предпочел последовательный ПЕРЕХОД ко всем этим клавишам, чтобы вы могли предотвратить действие по умолчанию в JavaScript).

С Android 4.1 (JellyBean) вы можете изменить поведение по умолчанию, расширив WebViewInputConnection: https://github.com/android/platform_frameworks_base/blob/master/core/java/android/webkit/WebViewClassic.java#L379

(хакерство)

Комментарии:

1. Я не понимаю, как заставить это работать. Как WebViewInputConnection, так и необходимый ввод WebViewCore.TextFieldInitData, похоже, недоступны. У вас есть пример того, как вы это сделали? Спасибо.

2. эта ссылка теперь мертва; ITYM github.com/android/platform_frameworks_base/blob/jb-release / … но тот факт, что он мертв, заставляет меня сомневаться, что он будет работать в 4.2 :/

Ответ №2:

Я полагаю, вам нужно указать, что ваш ввод не является многострочным вводом, в противном случае следующий заменяется на следующий

Комментарии:

1. Я привел пример в своем вопросе.

Ответ №3:

Когда webkit отображает эти поля ввода, он преобразует их в класс с именем android.webkit.WebTextView, который определяет, как будет выглядеть softkeyboard, и, похоже, нет хорошего способа переопределить imeOptions, установленные классом WebTextView