键盘和弹出窗口在BackPress上关闭

时间:2016-09-15 10:02:09

标签: android popupwindow

我正在开发一个Android应用程序。在页面底部的一个活动中,我正在显示一个popupWindow并用这个弹出窗口替换了键盘。这个popupWindow里面有一个searchview,所以当searchview聚焦时,键盘会显示出来,popupWindow会向上滑动。现在,当我按下Back Button(手机的后退按钮)时,键盘和弹出窗口都会关闭。 所以,我想在这里只关闭键盘,弹出窗口应该在键盘关闭后向下滑动。

我尝试了下面的事情:

setBackgroundDrawable(new BitmapDrawable());
poupupWindow.setFocusable(true);

应用KeyListner也在popupWindow上,但它不起作用。

     popupWindow.getContentView().setOnKeyListener(new View.OnKeyListener() {
                    @Override
                    public boolean onKey(View v, int keyCode, KeyEvent event) {

                   if (keyCode ==  KeyEvent.KEYCODE_BACK &&
                                event.getAction() == KeyEvent.ACTION_DOWN)              {
                   return true;                        
} return false;
                   }
                });

如果有人对此有所了解,请帮助我。非常感谢先进:)

1 个答案:

答案 0 :(得分:0)

使用onKeyDown()方法添加代码以隐藏键侦听器内的键盘。

        boolean isKeyboardHidden=false;
        @Override
        public boolean onKeyDown(int keyCode, KeyEvent event) {
         if (event.getAction() == KeyEvent.ACTION_DOWN) {
           switch (event.getKeyCode()) {
                case  KeyEvent.KEYCODE_BACK;
                       if(!isKeyboardHidden && popupview.isFocused())                                
                         {
                          InputMethodManager imm = 
                                   (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);

                          imm.hideSoftInputFromWindow(v.getWindowToken(), 0);

                          isKeyboardHidden=true;
                         }
                return true;                        
          }
         }
        return super.onKeyDown(keyCode, event);
        }