按钮显示PopupWindow,setOutsideTouchable(true)时,点击按钮再次打开的问题

先给大家看看这个:http://www.makaidong.com/%E5%8D%9A%E5%AE%A2%E5%9B%AD%E7%9F%A5%E8%AF%86%E5%BA%93/21462.shtml

可以说我也是受到了一点这个的启发,虽然我的思路和这很不一样,记录下。

我没有去试上面的方法,但看着应该也可以,但是我觉得不太妥,所以没有用,大家想法不一样,所以也贴上给大家看看,同时也感谢大神的提醒。

同求有更多,更好想法的人相互分享!!

ok,废话不多说,进入正题:

问题是这样,我在界面的个button,点击显示一个PopupWindow,需求是需要点击它之外的地方让它消失,我相信这也是很多用到它的人的共同需求,(另说一句,一查就能查到的,要setOutsideTouchable(true)有效果,还需要给PopupWindow设置背景)。可是我还想,当我再次点击这个button时PopupWindow能消失,可是实际的效果是,当PopupWindow显示时,点button,PopupWindow就消失了,这时button的click事件还会响应,并且判断PopupWindow为没有显示,所以会再次把PopupWindow打开。

我的解决方法是,在显示PopupWindow的Activity重写dispatchTouchEvent(MotionEvent ev)方法,然后取消到PopupWindow的outside监听,这时,点击PopupWindow之外是不会消失的,但是我可以在Activity的dispatchTouchEvent(MotionEvent ev)方法监听到,在这里,我判断如果PopupWindow显示着,就关了它,并返回true,让这次的点击事件不再传到下面,也就是说,当再次点那个button时,其实这个button的click事件并没有执行,但是PopupWindow关了,效果达成,上代码:

    public boolean dispatchTouchEvent(MotionEvent ev) {
        if (popupWindow != null && popupWindow.isShowing()) {
            popupWindow.dismiss();
            return true;
        }
        return super.dispatchTouchEvent(ev);
    }

对了,再说一句,当点击PopupWindow里的内容时,dispatchTouchEvent()是不会监听的。。。

时间: 2024-08-10 17:17:20

按钮显示PopupWindow,setOutsideTouchable(true)时,点击按钮再次打开的问题的相关文章

JQ 移动端返回顶部,往下滑动时显示返回按钮,往上滑动时隐藏返回按钮

returnTop:function(){ //预定义返回顶部的html代码,它的css样式默认为不显示 var gotoTop_html = '<div class="returnTop"></div>'; //将返回顶部的html代码插入页面上id为page的元素的末尾 $(".ding_C_returnTop").append(gotoTop_html); var windowTop=0;//初始话可视区域距离页面顶端的距离 $(doc

textview显示三行多余的隐藏点击按钮后显示

首先布局 因为我这个是列表所以这只是一个item <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent"> <Re

SalesForce自定义按钮(javascript执行),点击按钮更新Filed

学salesforce一个多月了,文档也看了不少,但大都是没有深究.salesforce国外很多文档资料,以前做java时百度很多都可以解决,现在做salesforce倒是提升了不少谷歌搜索的能力. 谷歌很多的东西在中国都是给屏蔽掉了,一般搜索不了什么东西,建议谷歌浏览器翻下墙(附上百度一http://jingyan.baidu.com/article/c85b7a64562eac003bac95b1.html). 创建自定义按钮点击更新字段: 1 进入salesforce的开发主页,没有就申请

jquery datatable搜索框添加按钮,改变keypress搜索为点击按钮搜索

都知道jquery datatable是很强大的js库.但原有的搜索模式是响应keypress的,虽然服务端模式是400ms延迟,但仍然会给服务器造成很大负担. 图1,原有样子: 图2:改变后的样子: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-

点击按钮复制文本内容 -- jquery Zclip -- Zero Clipboard

今天,经理让我做一个功能,复制文本框中的代码.以前在其他网站上经常见到过这个功能.只不过没有细细研究,今天也是个机会. 这里我使用的事jquery的zeroclipboard来实现复制功能.代码内容很简单,网上也有很多资料. Zero Clipboard作为一个独立的js库,它利用 Flash 进行复制,需要两个文件:ZeroClipboard.js 和 ZeroClipboard.swf . 具体实现如下: jsp页面:  <p>                               

点击按钮,弹出层位于屏幕中间,背景变灰

首先前台页面写一个button按钮,写一个层,点击按钮弹出层 <input type="button" value="选择填报单位" style="width: 150px; height: 30px; margin-bottom: 10px;font-size: 16px;font-family: 微软雅黑; " onclick="popupDiv('pop-div');" /> <div id="

CSS3和SVG炫酷鼠标点击按钮效果

这是一组效果非常炫酷的HTML5 SVG和CSS3鼠标点击按钮特效.这组鼠标点击按钮特效共有22种效果,大多数是在伪元素上使用CSS3 animations来制作动画效果.非常适合于移动手机APP上的按钮触摸特效. 在线演示:http://www.htmleaf.com/Demo/201502121370.html 下载地址:http://www.htmleaf.com/html5/SVG/201502121369.html

吴裕雄 Bootstrap 前端框架开发——Bootstrap 按钮:用于要弹出信息的按钮

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>菜鸟教程(runoob.com)</title> <link rel="stylesheet" href="https://cdn.staticfile.org/twitter-bootstrap/3.3.7/css/bootstrap.min.css"

关于点击显示PopupWindow再次点击消失的问题

点击一个按钮,弹出一个PopupWindow,想在触摸PopupWindow外区域或是再次点击按钮的时候dismiss此PopupWindow.直接上代码: //点击事件里的代码 if (mWin == null) { initPopupWindow(); } if (mWin.isShowing()) {//这一句真心没用,isShowing()总是返回false Util.write("win is showing"); mWin.dismiss(); } else { Util.