PopupWindow(3)back,home 键无法关闭popupwindow的解决方案

private PopupWindow mPopupWindow;  //popup window 一般popuowindow 要都个显示view,本例子中view模拟菜单.
private View mMenu;                //popup window 里的view

方案1:

  • 设置

mMenu.setFocusableInTouchMode(true);
mMenu.setOnKeyListener(this);
mMenu.setOnTouchListener(this);

mPopupWindow.setFocusable(true);
mPopupWindow.setOutsideTouchable(true);

  • 处理
@Override
    public boolean onKey(View v, int keyCode, KeyEvent event) {
        // TODO Auto-generated method stub
        switch (keyCode) {
        case KeyEvent.KEYCODE_BACK:
        case KeyEvent.KEYCODE_MENU:
            if (mPopupWindow != null && mPopupWindow.isShowing()) {
                mPopupWindow.dismiss();
            }
            break;
        }
        return true;
    }
    @Override
    public boolean onTouch(View v, MotionEvent event) {
        // TODO Auto-generated method stub
        mPopupWindow.dismiss();
        return false;
    }

方案2:

     /*
         * setBackgroundDrawable很重要,没有这个函数 back键和menu键关闭popwindow 很麻烦,
         * 有了它以后,就不用为popwindow内的控件分别设置setOnKeyListener和setOnTouchListener了
         * 可以同时支持back,menu键和点popwindow外面关闭popwindow,
         */
        mPopupWindow.setBackgroundDrawable(new ColorDrawable(-00000));
        mPopupWindow.setFocusable(true);
        mPopupWindow.setOutsideTouchable(true);
时间: 2024-10-16 11:18:44

PopupWindow(3)back,home 键无法关闭popupwindow的解决方案的相关文章

Win10系统粘滞键功能关闭又打开怎么办?

Win10系统中带有粘滞键的功能,原本是为了帮助不方便使用组合键的用户,但是很多用户都用不到这个功能,不知道怎么关闭,并且有些用户不小心打开这个功能后就无法彻底关闭了.下面就来和大家分享一下如何彻底关闭Win10系统的粘滞键功能.Win10系统的粘滞键是什么粘滞键功能是为了帮助不方便使用组合键的用户而设置的,即一次只需按下一个键,就可以实现组合键的功能,比较省事.其主要是针对附带有Ctrl键.Shift键.Alt键.Win键的组合键来设置的,比如想要使用"Alt+F4"关闭某个程序,就

jqueryeasyUI dialog 弹出窗口超出浏览器,导致不能关闭的bug解决方案

jqueryeasyUI dialog 弹出窗口超出浏览器,导致不能关闭的bug解决方案 2014年8月30日 3233次浏览 相信很多前端朋友都用过jqueryeasyUI,jqueryeasyUI功能很强大,可以实现我们前端很多想要的效果,例如,下拉树也就是select tree等.但是jqueryeasyUI底层构建不是很好,简单的应用还可以,深入开发的话,还是推荐用extjs相对好一些! 今天的这篇文章,主要是解决我很久很久之前遇到的一个问题,今天重新在博客上发一遍,就是jqueryea

bootstrap模态框Esc键不关闭

项目开发时很多时候会需要用到弹出框,而且很多框架都有自己的弹出框,比较现在很流行的bootstrap就有模态框(model). 很多时候这东西用起来非常方便,可以为开发省去很多自己定义的时间!最近项目中也用到了bootstrap,以及它人模态框model.用起来真的很爽,只需要$("#popbox").model("show")即可.但是爽归爽,bug也随之而来了! 原因是我需要在弹出框中定义一些事件和方法以及一些变量!但是,当我点击了某个元素使得某一个变量产生变化

Oracle存储过程update受外键约束的主键值时完整性冲突解决方案

1.问题背景 虽然在数据库操作中我们并不提倡修改主键,但是确实在实际生活中有这样的业务需求: 表A有主键KA,表B中声明了一个references A(KA)的外键约束,我们需要修改A中某条目KA的值并且更新B中外键约束. 但是DBMS在执行了第一条update后检查完整性会发现冲突:B中条目的外键不存在. 注:我在Oracle database环境下遇到这个问题的,Oracle很蛋疼的不能设置外键为update级连,所以只有人工处理. 2.举例说明 用一个简单的例子说明,数据库中有以下三个表:

react-navigation createDrawerNavigator 抽屉菜单 点击其他地方 无法关闭菜单的解决方案

react-native接入插件react-navigation 创建的抽屉菜单后  无法关闭抽屉菜单,只能再加一项“关闭”调用代码关闭菜单 点击其他地方无法关闭抽屉菜单 看了一下源码 没想到好办法后  在网上找到这样一个解决方案 现在贴出来: 下面是android的解决方案,在java中的MainActivity加入下面带+号的行代码: import com.facebook.react.ReactActivity;+ import com.facebook.react.ReactActivi

Android PopupWindow的使用技巧

PopupWindow是Android上自定义弹出窗口,使用起来很方便. PopupWindow的构造函数为 public PopupWindow(View contentView, int width, int height, boolean focusable) contentView为要显示的view,width和height为宽和高,值为像素值,也可以是MATCHT_PARENT和WRAP_CONTENT. focusable为是否可以获得焦点,这是一个很重要的参数,也可以通过 publ

HTML5的Canvas画图模拟太阳系运转

有一个需求是:在一个图片按钮上点击,在按钮的上方弹出一个弹框,根据弹框的内容页面做不同的显示.这个其实没什么难的,主要是要控制好弹框的显示位置,让弹框显示在图片的正上方的中间. 一开始是用的Popupwindow,但是Popupwindow不能给弹窗之外的页面加一个半透明的蒙层,当然可以在页面上加一个专门的作为蒙层的View,但是很显然,这么做会代码变得很恶心,于是又换成了Dialog,因为Dialog弹出的时候会自动加一个蒙层的,但是这个时候,弹框显示位置的Y坐标不对了,后来一顿查,原来Dia

Mysql存储过程包含事务,且传入sql数据执行

有一个需求是:在一个图片按钮上点击,在按钮的上方弹出一个弹框,根据弹框的内容页面做不同的显示.这个其实没什么难的,主要是要控制好弹框的显示位置,让弹框显示在图片的正上方的中间. 一开始是用的Popupwindow,但是Popupwindow不能给弹窗之外的页面加一个半透明的蒙层,当然可以在页面上加一个专门的作为蒙层的View,但是很显然,这么做会代码变得很恶心,于是又换成了Dialog,因为Dialog弹出的时候会自动加一个蒙层的,但是这个时候,弹框显示位置的Y坐标不对了,后来一顿查,原来Dia

Android-Popupwindow和Dialog做弹出窗口

有一个需求是:在一个图片按钮上点击,在按钮的上方弹出一个弹框,根据弹框的内容页面做不同的显示.这个其实没什么难的,主要是要控制好弹框的显示位置,让弹框显示在图片的正上方的中间. 一开始是用的Popupwindow,但是Popupwindow不能给弹窗之外的页面加一个半透明的蒙层,当然可以在页面上加一个专门的作为蒙层的View,但是很显然,这么做会代码变得很恶心,于是又换成了Dialog,因为Dialog弹出的时候会自动加一个蒙层的,但是这个时候,弹框显示位置的Y坐标不对了,后来一顿查,原来Dia