2015-06-07 2 views
4

Я создаю собственную пользовательскую клавиатуру.Кнопка мыши «поиск» нажатием на пользовательскую клавиатуру

Как отрегулировать нажатие кнопки поиска в случае, если наша клавиатура открыта с параметром IME_ACTION_SEARCH?

У меня есть следующий код, но, к сожалению, в случае поиска он не работает. В обычной ситуации с кнопкой «Готово» она работает хорошо.

 final int options = this.getCurrentInputEditorInfo().imeOptions; 
     final int actionId = options & EditorInfo.IME_MASK_ACTION; 

     switch (actionId) { 
      case EditorInfo.IME_ACTION_SEARCH: 
       ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_SEARCH)); 
       break; 
      default: 
       ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER)); 
     } 

Благодаря

ответ

7

Я нашел решение, чтобы сделать это:

endDefaultEditorAction(true); 

это метод InputMethodService

Полный код:

case Keyboard.KEYCODE_DONE: 
     final int options = this.getCurrentInputEditorInfo().imeOptions; 
     final int actionId = options & EditorInfo.IME_MASK_ACTION; 

     switch (actionId) { 
      case EditorInfo.IME_ACTION_SEARCH: 
       sendDefaultEditorAction(true); 
       break; 
      case EditorInfo.IME_ACTION_GO: 
       sendDefaultEditorAction(true); 
       break; 
      case EditorInfo.IME_ACTION_SEND: 
       sendDefaultEditorAction(true); 
       break; 
      default: 
       ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER)); 
     } 

     break; 
+0

СПАСИБО! Но зачем отправлять событие вручную не работает? У вас есть идея? – Mohammad

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