2016-06-07 3 views
0

У меня есть любопытный случай все еще видимой мягкой клавиатуры. Простой поток. Деятельность без каких-либо редакторов, где скрыта мягкая клавиатура. Из манифеста:Все еще видимая мягкая клавиатура

<activity 
     android:name=".activities.MainActivity" 
     android:theme="@style/MainActivity" 
     android:windowSoftInputMode="stateAlwaysHidden" /> 

... а также проверяется код

 this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN); 

В этой деятельности у меня есть фрагмент, который содержит WebView. Я добавил touchlistener к этому веб-просмотру, который отправляет ему «пробел».

protected View.OnTouchListener onTouchListener = new View.OnTouchListener() { 
    @Override 
    public boolean onTouch(View v, MotionEvent event) { 
     if (event.getAction() == MotionEvent.ACTION_DOWN) { 
       Instrumentation inst = new Instrumentation(); 
       inst.sendKeyDownUpSync(KeyEvent.KEYCODE_SPACE); 
     } 
     return false; 
    } 
}; 

Он обрабатывает эффект начала/паузы, где у меня есть видео-контент vimeo этого веб-представления. Раньше я пытался общаться с видеоигром vimeo с помощью обработчика javascript, но это не работало. Отправка ключевого события - действительно простое решение и отлично работает на всех устройствах, кроме одного. На dell t01c при вызове touchlistener появляется программная клавиатура. Я могу скрыть его с простым

InputMethodManager imm = (InputMethodManager) getSystemService(INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(getWindow().getCurrentFocus().getWindowToken(), 0); 

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

ответ

-1

Попробуйте

поставить этот статический метод в классе Utils

public static void hideKeyboard(Activity activity) { 
      try { 
       InputMethodManager input = (InputMethodManager) activity 
         .getSystemService(Activity.INPUT_METHOD_SERVICE); 
       input.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0); 
      } catch (Exception e) { 
       e.printStackTrace(); 
      } 
     } 

вызывает этот метод везде, где вы хотите, чтобы скрыть клавиатуру Utils.hideKeyboard (YOURACTIVITY.this);

+1

Вы прочитали вопрос до конца? Я написал, что это решение разрушает режим погружения. – Nihilus13

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