Подтвердить что ты не робот

Ящик навигации скрывает клавиатуру, когда onDrawerOpened

У меня есть фрагмент с edittext. Когда я нажимаю на edittext, появляется клавиатура. проблема в том, когда я открываю ящик, ящик не скрывает клавиатуру. клавиатура все еще показывает, даже я переключаюсь на другой фрагмент. Как я могу скрыть клавиатуру, когда открываю ящик.

Я пытаюсь поставить

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

и

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);

оба из них не скрывают клавиатуру.

4b9b3361

Ответ 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);

надеюсь, что это поможет.