当onDrawerOpened时,抽屉隐藏键盘

我有一个带有edittext的片段。 当我点击edittext时,键盘显示出来。 问题是当我打开抽屉时,抽屉不隐藏键盘。 键盘仍然显示,即使我切换到另一个片段。 当我打开抽屉时,如何隐藏键盘。

我尝试把

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

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

它们都不隐藏键盘。

Solutions Collecting From Web of "当onDrawerOpened时,抽屉隐藏键盘"

在打开/closures幻灯片抽屉之前,请使用这一行代码

 InputMethodManager inputMethodManager = (InputMethodManager) this.getSystemService(Activity.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(this.getCurrentFocus().getWindowToken(), 0); 

尝试这个…

 @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); } }; 

快乐编码…

问题是getWindowToken()必须从当前“持有”键盘的视图中调用。 这是非常烦人的,我同意你的意见,但这是如何工作的。

例如,让我们说EditText mEditText是当前焦点接收键盘击键的对象。 那么你的代码将是:

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

希望能帮助到你。