2014-12-20 2 views
1

Необходимо открыть клавиатуру, прикрепленную к одному представлению, и делегировать ключевые события в edittext, но нет необходимости прикреплять клавиатуру к EditText, когда она сфокусирована. Я пытался с этим кодом:Как отключить клавиатуру, когда фокусировка EditText?

в манифесте:

<activity android:windowSoftInputMode="adjustPan|stateAlwaysHidden" /> 

код:

InputMethodManager inputMethodManager = (InputMethodManager) rootView.getContext() 
            .getSystemService(Context.INPUT_METHOD_SERVICE); 
inputMethodManager.showSoftInput(view, InputMethodManager.SHOW_FORCED); 

view.setOnKeyListener(new View.OnKeyListener() { 
    @Override 
    public boolean onKey(View view, int keycode, KeyEvent keyEvent) { 
     switch (keyEvent.getAction()){ 
      case KeyEvent.ACTION_UP: 
       editText.onKeyUp(keycode, keyEvent); 
       break; 
      case KeyEvent.ACTION_DOWN: 
       editText.onKeyDown(keycode, keyEvent); 
       break; 
     } 
     return true; 
    } 
}); 

Все будет хорошо (клавиатура показывает), но когда EditText получает фокус - все логическая ошибка (keybord reseded on edittext);

editext.requestFocus(); 

Фокус в редактировании текста, необходимого для обработки выделения и других вещей, которые зависят от фокуса.

Любая помощь важна для меня, спасибо;

UPDATE: Там нет необходимости, чтобы скрыть клавиатуру, нужные шаги:

  1. клавиатура открыта и прикреплена к некоторому мнению
  2. Редактирование текста получает фокус, но клавиатура не приписываются к нему

ответ

2

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

 <activity 
     android:name=".YourActivityName" 
     android:windowSoftInputMode="stateHidden"></activity> 
0

Создание функции:

/* Hides keyboard, if diaplayed */ 
public void hideKeyboard(){ 
    View currentFocus = MainAcitivty.this.getCurrentFocus(); // Change the name according to your activity's name. 
    InputMethodManager inputMethodManager = (InputMethodManager) getSystemService(MainActivity.this.INPUT_METHOD_SERVICE); 
    if(currentFocus != null){ 
     inputMethodManager.hideSoftInputFromWindow(currentFocus.getWindowToken(),0); 
     currentFocus.clearFocus(); 
    } 
} 

И позвони вышеуказанную функцию от где вы хотите, чтобы скрыть клавиатуру.

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

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