0

У меня есть webapp Я пытаюсь взаимодействовать с Android. Для отображения страницы очень просто получить веб-просмотр, однако на странице используется экранная клавиатура. Если только один вход был на странице, было бы легко установитьAndroid webView touchEvents

android:focusableInTouchMode="false" 

в WebView, однако есть несколько мест, где несколько входов присутствуют, и это отключает возможность выбрать любые их (первую один на странице автоматически выбирается).

Будет ли это работать, возможно, расширить и переопределить webView, чтобы иметь возможность выбирать входные данные, но не открывать softKeyboard?

Я также посмотрел this example, однако я не думаю, что будет работать с веб-просмотром.

EDIT:

Чтобы уточнить, я могу просто переопределить с myWebView.setOnTouchListener (...), и сделали это в тесте, это здорово, поскольку это не позволяет softKeyboard показать, однако также не допускает ничего другого, т. е. выбор ввода. В идеале была бы счастливая среда, где все происходит, кроме появления softKeyboard. (Да я пробовал другие методы, такие как

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 
+0

Вы говорите, что если вы установите 'android: focusableInTouchMode =" false "', то это отключит возможность навигации по элементам управления HTML * внутри * WebView? –

+0

Нет, это делает весь веб-просмотр неактивным, и поэтому система не реагирует на поля, основанные на html, как ориентированные. Он по-прежнему доступен для навигации, поскольку элементы управления внутри - это javascript. – Nagaka

ответ

0

Я чувствую, что мой вопрос был несколько расплывчатым, как я был в моем конце остроумия после нескольких часов, глядя на это.

Моя конечная цель должна была быть в состоянии для отображения веб-страницы с экранной клавиатурой с несколькими полями ввода. Проблема заключалась в том, что экранная клавиатура Android будет отображаться всякий раз, когда фокус был в поле ввода.

Я пробовал несколько обходных решений, один из которых указан в вопросе не работал потому что я не мог выбрать какие-либо входы, поскольку команды касания не были зарегистрированы.

Я попробовал переопределить onTouch, однако клавиатура отображается после касания «вверх», и поэтому было невозможно иметь поведение по умолчанию и все же перехватывать и отключать клавиатуру.

Решение, которое сработало для моей проблемы, заключалось в расширении класса WebView, а затем переопределении «onCreateInputConnection». Это где android интерпретирует «тип» поля ввода html. Проблема в том, что для html не существует типа «нуль», поэтому андроид всегда будет отображать какую-то клавиатуру на основе типа ввода. Однако у Android есть нулевой тип ввода, который говорит клавиатуре, что здесь нет необходимости вводить вход.

@Override 
public InputConnection onCreateInputConnection(EditorInfo outAttrs) { 
    BaseInputConnection fic = new BaseInputConnection(this, true); 
    outAttrs.actionLabel = null; 
    outAttrs.inputType = InputType.TYPE_NULL; 
    return fic; 
} 

Этот метод overriden - это все, что было необходимо для моего веб-просмотра, чтобы полностью отключить входные данные во всех моих текстовых полях.

ПРИМЕЧАНИЕ. Это также отключает подключенный аппаратный ввод с клавиатуры ... не проблема в моем случае, однако мне было бы интересно узнать о работе там.

 Смежные вопросы

  • Нет связанных вопросов^_^