Почему Android WebView отказывается от ввода данных пользователем? - PullRequest
36 голосов
/ 18 января 2010

Я разрабатываю приложение для Android, которое использует WebView для отображения страницы входа в Facebook. Страница загружается красиво, и я могу выбрать текстовые поля для имени пользователя / пароля, но ввод их не будет работать. То есть, они определенно имеют фокус ввода (у них оранжевое поле выделения фокуса и мигающий курсор), но их ввод абсолютно ничего не делает. Я не уверен, но я думаю, что, возможно, кнопки формы также работают - они просто обновляют страницу, а не отправляют форму.

Просто чтобы прояснить, хотя я особенно заинтересован в том, чтобы запустить Facebook, я уверен, что это не проблема Facebook, поскольку другие сайты (Google и т. Д.) Также демонстрируют такое же поведение.

У кого-нибудь есть идеи, в чем может быть проблема?

Ответы [ 16 ]

1 голос
/ 13 августа 2010

Я столкнулся с этой проблемой, потому что я показываю заставку, когда веб-просмотр загружает первую страницу.Я устанавливаю для веб-просмотра значение View.VISIBLE в onPageFinished, однако, несмотря на возможность фокусировки текстовых полей, вы не можете в них вводить.Я также могу подтвердить, что исправление, устанавливающее запрос веб-просмотра Focus в View.FOCUS_DOWN, работает.

NB.Если в onResume я установлю для веб-просмотра View.VISIBLE, проблема не возникнет, но в моем случае заставка исчезнет слишком рано.

0 голосов
/ 03 июля 2015

Это также произошло в моем проекте.Я перепробовал все вышеперечисленные методы, ни один из них не может быть эффективным.Наконец, я решил эту проблему путем использования темы диалога, заменившей родной диалог.Надеюсь, это кому-нибудь поможет!

0 голосов
/ 04 мая 2015

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

После долгого поиска решения я обнаружил, что это решает проблему:

body {
    -webkit-transform: translate3d(0,0,0);
    -moz-transform: translate3d(0,0,0);
    -ms-transform: translate3d(0,0,0);
    -o-transform: translate3d(0,0,0);
    transform: translate3d(0,0,0);
}

Как я понялЭто правило заставляет некоторые устройства запускать аппаратное ускорение.Больше информации о translate3d (0,0,0) здесь.

С другой стороны, согласно этой статье не рекомендуется везде использовать ускорение GPU.

0 голосов
/ 16 апреля 2015

Если мы имеем дело с EditText в WebView, то v.requestFocusFromTouch () не будет работать, если нам потребуется USER_AGENT написанный Mozilla / 5.0 (X11; Linux i686), и будет работать нормально, если Mozilla / 5.0 (X11 ; Linux x86_64).

0 голосов
/ 29 июля 2014

в моем контексте (веб-просмотр, содержащий внешний URL), этот фрагмент работает:

    webview.setOnTouchListener(new View.OnTouchListener() {
       @Override
       public boolean onTouch(View v, MotionEvent event) {
           switch (event.getAction()) {
               case MotionEvent.ACTION_DOWN:
               case MotionEvent.ACTION_UP:
                   v.requestFocusFromTouch();  
                   break;
           }               
           return false;
       }

});

ошибка в том, что при каждом прикосновении веб-просмотр терял фокус!

0 голосов
/ 19 июня 2013

Я нашел проблему, которая может отличаться, но звучит похоже. В родном браузере Android 2.3, если у вас есть фиксированные позиции элементов на странице, он иногда ломает поля выбора.

Обходной путь для этой проблемы для устройств 2.3 - никогда не допускать пустых дочерних элементов для родительского элемента с фиксированной позицией. Таким образом,

<div style="position:fixed">
  <div>
    <span>not empty</span>
    <span></span>
  </div>
</div>

станет

<div style="position:fixed">
  <div>
    <span>not empty</span>
    <span>&nbsp;</span>
  </div>
</div>

Это исправило мою проблему.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...