Проблема с всплывающим окном клавиатуры планшета Sony

Кто-нибудь еще знает, как исправить очень неприятную проблему на Sony Tablet S.

У меня есть вертикальный ScrollView и linearlayout с большим количеством TextViews и некоторыми EditTexts. Когда я прокручиваю экран вниз и появляется EditText, устройство решает передать фокус EditText и всплывает клавиатура.

Этого не происходит на других устройствах, таких как Asus Transformer Prime, HTC One X, Samsung Galaxy Tab и HP TouchPad (cyanogenmod).

Вещи, которые я сделал.

  • В манифесте действия для режима мягкого ввода Windows установлено значение «stateHidden».
  • В верхней части стека находится LinearLayout, для которого значения focusable и focusable in touch равны true.
  • Код также уделит этому макету внимание при создании.

Это определенно похоже на проблему, специфичную для Sony Tablet!

У кого-нибудь еще была эта проблема и решение?

Спасибо


person Dirk Diggler    schedule 23.05.2012    source источник


Ответы (3)


Добавьте прослушиватель событий в EditText, когда он получит фокус, затем скройте клавиатуру.

используя это:

InputMethodManager mgr = (InputMethodManager) getSystemService(
    Context.INPUT_METHOD_SERVICE);
mgr.hideSoftInputFromWindow(editText.getWindowToken(), 0);

чтобы получить событие получения фокуса, используйте эту функцию

imageView.setOnFocusChangeListener(
    new OnFocusChangeListener() {
        public void onFocusChange(View arg0, boolean arg1) {
            // hide the keyboard using above code
            InputMethodManager mgr = (InputMethodManager) getSystemService(
                Context.INPUT_METHOD_SERVICE);
            mgr.hideSoftInputFromWindow(editText.getWindowToken(), 0);
        }
    });

Надеюсь, это поможет.

person Raheel    schedule 23.05.2012
comment
Спасибо за код. К сожалению, это не имеет никакого эффекта. Та же проблема с всплывающей клавиатурой при прокрутке экрана вниз. - person Dirk Diggler; 24.05.2012
comment
Код не действует должным образом на HTC Desire с версией 2.2.1. Клавиатура не появляется, но нижняя половина экрана прокручивается вверх (там, где будет отображаться клавиатура). Я просто публикую это, чтобы внести свой вклад на других платформах. - person Richard Le Mesurier; 29.05.2012

Я только что установил обновление ICS. Теперь проблема исчезла!

person Dirk Diggler    schedule 31.05.2012

Попробуйте опубликовать runnable в представлении.

editText.post(new Runnable() {
   @Override
   public void run() {
      InputMethodManager mgr = (InputMethodManager) getSystemService(
            Context.INPUT_METHOD_SERVICE);
        mgr.hideSoftInputFromWindow(editText.getWindowToken(), 0);
   }
});
person Nora Mullaney    schedule 07.10.2015