Blog / 阅读

解决PopupWindow获得焦点后Activity按键无响应的问题

by admin on 2014-03-19 16:30:50 in ,



PopupWindow里面要响应点击事件,所以就调用了setFocusable(true)方法,这样造成了显示了PopupWindow,无法响应按键事件了。
如果你只是要响应返回键:
PopupWindow调用setBackgroundDrawable(new BitmapDrawable())这个方法就行了,貌似是要设个背景资源(具体原因查API也没搞清),这里设个空的就不影响其他界面了。
如果你需要响应其他按键,比如我是按menu出来PopupWindow,再按menu就消失:
先获得你自定义PopupWindow的layout
diyView  = getLayoutInflater().inflate(“自定义的layout”, null);
PopupWindow获得焦点后,Activity的按键事件是响应不了的,所以获得这个layout的一个子View(我是获得最外层的RelativeLayout),设置OnKeyListener,让这个view在PopupWindow显示的时候响应按键事件,看代码:

RelativeLayout layout = (RelativeLayout) diyView.findViewById(R.id.othernavigation_root);  
        layout.setFocusableInTouchMode(true);//能够获得焦点  
        layout.setOnKeyListener(new OnKeyListener() {  
            @Override  
            public boolean onKey(View v, int keyCode, KeyEvent event) {  
                if (event.getAction() == KeyEvent.ACTION_DOWN) {  
                    switch(keyCode) {  
                    case KeyEvent.KEYCODE_BACK:  
                        checkAndClear();  
                        break;  
                    case KeyEvent.KEYCODE_MENU:  
                        checkAndClear();  
                        break;  
                    }  
                }  
                return true;  
            }  
        });  


写评论

相关文章

上一篇:Android之LinearLayout布局

下一篇:Android基本功:手势

评论

写评论

* 必填.

分享

栏目

赞助商


热门文章

Tag 云