Как закрыть softinputkeyboard
Я создал обычное поле EditText. Моя проблема с текстовым полем состоит в том, что когда я нажимаю на EditText, клавиатура поднимается, но когда я нажимаю в другом месте, клавиатура все еще остается открытой. Пожалуйста, помогите мне в этом вопросе
Имя пользовательского автоматического EditText - auto_list. Я прикрепил onFocusChangeListener
auto_list.setOnFocusChangeListener(new OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
if (hasFocus) {
getActivity()
.getWindow()
.setSoftInputMode(
WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE);
}
else{
InputMethodManager im = (InputMethodManager)v.getContext().getSystemService(Context.INPUT_METHOD_SERVICE);
im.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
}
});
4 ответа
Попробуйте код ниже
public static void hideKeyboard(Activity activity) {
InputMethodManager inputManager = (InputMethodManager) activity
.getSystemService(Context.INPUT_METHOD_SERVICE);
if (inputManager != null && activity.getCurrentFocus() != null) {
inputManager.hideSoftInputFromWindow(activity.getCurrentFocus()
.getWindowToken(), 0);
}
}
Вы только проверяете hasFocus, кажется, это вызывает у вас проблемы. вы должны проверить что-то вроде этого
if(v.getId() == R.id.your_edit_text && hasFocus)
Сделайте это в случае, если вы хотите скрыть программную клавиатуру...
InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(xxx.getWindowToken(), 0);
где xxx
это текст редактирования, в котором вы хотите скрыть клавиатуру. сделайте то же самое, если у вас есть более одного текста для редактирования, к которому вы хотите применить одну и ту же функциональность.
Попробуй это:
try
{
InputMethodManager inputManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
}
catch (Exception e)
{
// Ignore exceptions if any
Log.e("KeyBoardUtil", e.toString(), e);
}