Android WebView: по умолчанию возможно сначала установить цифровую клавиатуру при использовании типа ввода = текст

У нас есть приложение, которое использует webview для представления некоторых HTML-страниц. Эта HTML-страница имеет тип ввода, и мы использовали input-type = number, поскольку в этом поле мы принимаем только цифры с десятичной дробью. Таким образом, цифровая клавиатура Android появилась с десятичной точкой.

Проблема в том, что устройства Samsung обновлены до Android 4.3. Теперь десятичная точка отсутствует на цифровой клавиатуре.

Таким образом, нам нужно поместить общую клавиатуру, чтобы иметь десятичную точку. Проблема в том, что общая клавиатура отображается с буквами, и мы хотим, чтобы по умолчанию клавиатура отображалась на цифровой части клавиатуры, чтобы сделать ее более удобной для пользователя. Как это.

введите описание изображения здесь

Как мы можем достичь этого??

РЕДАКТИРОВАТЬ: Может быть, я не очень хорошо объяснил. Проблема на HTML-странице, а не в Android TextView. Так что все ответы на android:type бесполезны.

2 ответа

Создание подклассов WebView и переопределение метода onCreateInputConnection позволяет получить десятичный разделитель на программной клавиатуре.

Другой вариант - изменить тип ввода HTML с "number" на "tel", но это позволяет пользователю вводить дополнительные символы, такие как "*" и "#".

Похоже, это проблема Samsung 4.3.

@Override
public InputConnection onCreateInputConnection(EditorInfo outAttrs) {

    InputConnection connection = super.onCreateInputConnection(outAttrs);

    if ((outAttrs.inputType & InputType.TYPE_CLASS_NUMBER) == InputType.TYPE_CLASS_NUMBER)
    {
        outAttrs.inputType |= InputType.TYPE_NUMBER_FLAG_DECIMAL;
    }

    return connection;
}

Вы можете установить для клавиатуры значение InputType, переопределив в файле класса макет веб-вида, который вы используете:

override fun onCreateInputConnection(outAttrs: EditorInfo): InputConnection {
    val inputConnection = BaseInputConnection(this, false)
    outAttrs.imeOptions = EditorInfo.IME_ACTION_DONE
    outAttrs.inputType = EditorInfo.TYPE_CLASS_NUMBER
    return inputConnection
}

Это может помочь вам

Другие вопросы по тегам