Android: Скрыть клавиатуру после нажатия кнопки
Мне нужно скрыть клавиатуру Android после нажатия кнопки.
Я видел много примеров того, как это сделать, однако все они, похоже, используют определенный объект editText.
например.
InputMethodManager imm = (InputMethodManager)getSystemService(
Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(myEditText.getWindowToken(), 0);
Моя проблема в том, что я строю экран динамически, поэтому могут быть текстовые поля редактирования манны. Есть способ, которым клавиатура может быть скрыта без необходимости указывать, для какого объекта editText я ее скрываю.
Спасибо
Martin
Ответы
Ответ 1
Вместо этого вы можете установить его в свой макет, то есть:
LinearLayout mainLayout;
// Get your layout set up, this is just an example
mainLayout = (LinearLayout)findViewById(R.id.myLinearLayout);
// Then just use the following:
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mainLayout.getWindowToken(), 0);
Это пример, предполагающий, что ваш макет будет создан независимо от того, сколько объектов EditText
(или других объектов) помещено на него.
Edit: Кроме того, что-то, что я считаю очень полезным, - это убедиться, что клавиатура скрыта при первом запуске активности (то есть: если EditText
- это первое, что сфокусировано). Чтобы сделать это, я поместил это в метод onCreate()
Activity:
this.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Ответ 2
Не забудьте воспользоваться блоком try catch, потому что если ваша клавиатура не открыта и если вы используете приложение с клавиатурной клавиатурой, это приведет к сбою
try {
InputMethodManager imm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
} catch (Exception e) {
// TODO: handle exception
}
Ответ 3
Скрыть клавиатуру можно с помощью следующего кода, возможно, на кнопке нажмите кнопку "Событие":
//================ Hide Virtual Key Board When Clicking==================//
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow("Your Button/EditText Object".getWindowToken(), InputMethodManager.RESULT_UNCHANGED_SHOWN);
//======== Hide Virtual Keyboard =====================//
Ответ 4
Вы используете этот код
// Check if no view has focus:
View view = this.getCurrentFocus();
if (view != null) {
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
Ответ 5
Если проблема связана с активностью, то будет работать следующее:
try {
InputMethodManager imm = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
} catch (Exception e) {
// TODO: handle exception
}
else, если код требуется в фрагменте, выполните следующие
try {
InputMethodManager imm = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), 0);
} catch (Exception e) {
// TODO: handle exception
}
Это будет обрабатывать скрытие клавиатуры нажатием кнопки или любым другим событием, которое считается конкретным, если оно записано в блоке событий.
Ответ 6
InputMethodManager inputManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(rootView.getWindowToken(), 0);
Ответ 7
edittext.onEditorAction(EditorInfo.IME_ACTION_DONE);