2010-05-09 2 views
8

Я развиваюсь на Droid Incredible (и тестировал также 1.5 AVD-эмулятор), и одна из вкладок в моем виджетах вкладки состоит из списка и строки с EditText и Отправить (для функции чата). Я использую следующее, чтобы закрыть мягкую клавиатуру после нажатия кнопки «Отправить», но она не работает. Это идентично коду, который я нашел где-то в другом месте, что люди исправлены как правильные.Скрыть мягкую клавиатуру не работает

Просмотреть все, что у меня отсутствует?

// in Button's onClick(): 
EditText chatTextBox = (EditText) findViewById(R.id.chat_entry); 
// Handle button click ... 
chatTextBox.setText(""); 

InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE); 
imm.hideSoftInputFromWindow(chatTextBox.getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY); 

Я также попытался сменить флаг на 0. Не повезло. Кто-нибудь знает, что случилось?

**** EDIT **** Только что понял, что изначально я использовал hideSoftInputFromInputMethod() вместо hideSoftInputFromWindow(). Изменение этого не заставило его работать, хотя ...

ответ

20

Изменение HIDE_IMPLICIT_ONLY на 0 сделало это (после того, как я изменил на hideSoftInputFromWindow() от hideSoftInputFromInputMethod()).

Однако я не уверен, почему HIDE_IMPLICIT_ONLY не работает, так как я не открываю клавиатуру явным образом, долгое нажатие на Меню.

+0

Если вы покажете клавиатуру с флагом 'SHOW_FORCED'then это указует на то, что пользователь вынужден метод ввода открытым (например, с помощью длительного нажатия меню), поэтому он не должен быть закрыт, пока они явно не сделают. [См. Документацию] (http://developer.android.com/reference/android/view/inputmethod/InputMethodManager.html#SHOW_FORCED) –

+0

Если у вас есть ** Принудительная ** показана клавиатура и вы хотите скрыть, используйте следующий код 'InputMethodManager imm = (InputMethodManager) mContext.getSystemService (Context.INPUT_METHOD_SERVICE); \t \t imm.hideSoftInputFromWindow (mEditText.getWindowToken(), 0); ' –

11

Другой вариант, чтобы предотвратить его деятельности в AndroidManifest.xml файл

андроида: windowSoftInputMode = «stateAlwaysHidden» - Этот метод позволит предотвратить загрузку/отображение клавиатуры, когда активность загружается. Но когда вы нажимаете редактируемый компонент, такой как edittext, клавиатура откроется. идеально подходит для моего требования.

<activity 
      android:name=".Name" 
      android:label="@string/app_name" 
      android:windowSoftInputMode="stateAlwaysHidden"> 
+0

Это работает, когда клавиатура никогда не умирает как-то. Неплохо. – beginners

5

1.First связать текстовый маркер редактирования с клавиатурой и открытым
т.е. inputMethodManager.showSoftInput(_edittext, 0); // здесь _edittext является экземпляром зрения

2.keyboard получит скрыт автоматически, если редактирование текста скрывается от экрана

текст 3.edit по-прежнему отображается на экране, но вы хотите скрыть клавиатуру, а затем используйте код ниже imm.hideSoftInputFromWindow(_edittext.getWindowToken(), 0); // t его не будет работать, если edittext не на экране или не сфокусирован.

+1

Это лучший ответ когда-либо !!! Объяснил тайну, скрывающую скрытую клавиатуру – ulusoyca