导航抽屉打开时如何关闭键盘?

bla*_*olf 8 android slidingdrawer android-fragments

我在我的应用程序中添加了导航抽屉.到目前为止其他一切工作都很顺利,但我遇到的问题是导航抽屉打开时键盘没有关闭.导航抽屉是主要活动,然后从抽屉打开的每个页面都是一个片段.

我已经尝试将以下内容添加到片段中的每个EditText区域.但是,这并没有结束任何事情.

InputMethodManager imm1 = (InputMethodManager)getActivity().getSystemService(
            Context.INPUT_METHOD_SERVICE);
        imm1.hideSoftInputFromWindow(input1.getWindowToken(), 0);
Run Code Online (Sandbox Code Playgroud)

我也尝试将该代码放在主要活动中,但也没有成功.关于我可以采用哪些不同方法来实现这一目标的任何想法?

Ram*_*amz 15

要隐藏一个开放的键盘当打开或关闭抽屉式导航栏,请重写方法onDrawerSlideonDrawerListner,添加以下线

InputMethodManager inputMethodManager = (InputMethodManager) actionBarActivity
    .getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(
    actionBarActivity.getCurrentFocus().getWindowToken(),
    0
);
Run Code Online (Sandbox Code Playgroud)


Gil*_*man 11

final DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
ActionBarDrawerToggle  actionBarDrawerToggle = new ActionBarDrawerToggle(this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close) {
        @Override
        public void onDrawerClosed(View drawerView) {
            super.onDrawerClosed(drawerView);
       }

        @Override
        public void onDrawerOpened(View drawerView) {
            super.onDrawerOpened(drawerView);
            InputMethodManager inputMethodManager = (InputMethodManager)
                    getSystemService(Context.INPUT_METHOD_SERVICE);
            inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
        }

        @Override
        public void onDrawerSlide(View drawerView, float slideOffset) {
            super.onDrawerSlide(drawerView, slideOffset);
            InputMethodManager inputMethodManager = (InputMethodManager)
                    getSystemService(Context.INPUT_METHOD_SERVICE);
            inputMethodManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), 0);
        }
    };
    drawer.setDrawerListener(actionBarDrawerToggle);
    actionBarDrawerToggle.syncState();
Run Code Online (Sandbox Code Playgroud)