Ящик навигации скрывает клавиатуру, когда onDrawerOpened
У меня есть фрагмент с edittext.
Когда я нажимаю на edittext, появляется клавиатура.
проблема в том, когда я открываю ящик, ящик не скрывает клавиатуру.
клавиатура все еще показывает, даже я переключаюсь на другой фрагмент.
Как я могу скрыть клавиатуру, когда открываю ящик.
Я пытаюсь поставить
InputMethodManager imm =
(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getWindowToken(), 0);
и
getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
оба из них не скрывают клавиатуру.
Ответы
Ответ 1
используйте эту строку кода перед тем, как открыть/скопировать слайдер.
InputMethodManager inputMethodManager = (InputMethodManager) this.getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), 0);
Ответ 2
Попробуйте это...
@Override
protected void onCreate(Bundle savedInstanceState) {
......
//Initialize
drawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
//Setting the actionbarToggle to drawer layout
drawerLayout.setDrawerListener(actionBarDrawerToggle);
//calling sync state is necessay or else your hamburger icon wont show up
actionBarDrawerToggle.syncState();
}
DrawerListerner:
ActionBarDrawerToggle actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawerLayout, toolbar, R.string.app_name, R.string.app_name) {
@Override
public void onDrawerClosed(View drawerView) {
// Code here will be triggered once the drawer closes as we dont want anything to happen so we leave this blank
super.onDrawerClosed(drawerView);
InputMethodManager inputMethodManager = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
@Override
public void onDrawerOpened(View drawerView) {
// Code here will be triggered once the drawer open as we dont want anything to happen so we leave this blank
super.onDrawerOpened(drawerView);
InputMethodManager inputMethodManager = (InputMethodManager)
getSystemService(Context.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
}
};
Счастливое кодирование...
Ответ 3
проблема заключается в том, что getWindowToken()
должен вызываться из представления, которое в настоящее время "удерживает" клавиатуру. Это очень раздражает, я согласен с вами, но так оно и работает.
Например, скажем, EditText mEditText
- объект, который в данный момент находится в фокусе, получает нажатия клавиш клавиатуры. Тогда ваш код будет выглядеть следующим образом:
InputMethodManager imm =
(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(mEditText.getWindowToken(), 0);
надеюсь, что это поможет.