//如果默认屏幕的话,父view就写自己

popupWindow.showAtLocation(inflate, Gravity.BOTTOM, 0, 0);

PopupWindow 
顾名思义为弹出式菜单, 
不同于Dialag对话框,PopupWindow 
不会使宿主activity组件失去焦点, 
也就是说PopupWindow弹出后, 
你可以与宿主activity进行交互, 
Dialog却不能做到这一点。

注意:PopupWindow组件的使用问题,PopupWindow是一个阻塞对话框,如果你直接在Activity创建的方法中显示它,则会报错:android.view.WindowManager$BadTokenException:Unable to add window -- token null is not valid; is your activity running? 
总结: PopupWindow必须在某个事件中显示或者是开启一个新线程去调用,不能直接在onCreate方法中显示一个Popupwindow,否则永远会有以上的错误

常用设置: 
// PopupWindow定义,显示view,以及初始化长和宽  
PopupWindow menu = new PopupWindow(view, 200, 60);  
// 必须设置,否则获得焦点后页面上其他地方点击无响应  
menu.setBackgroundDrawable(new BitmapDrawable());  
// 设置焦点,必须设置,否则PopupWindow内的空间无法响应事件  
menu.setFocusable(true);  
// 设置点击其他地方 popupWindow消失    
menu.setOutsideTouchable(true);  
// 显示在某个位置  
menu.showAsDropDown(anchor);

除了setBackgroundDrawable(new BitmapDrawable());还可以使用下面两种解决页面无法响应问题 
a、处理响应 
有点麻烦,有兴趣可以自己看看http://zhoudan241.iteye.com/blog/1147730

b、最笨的方法将listView中元素拿出来放到LinearLayout中,对于非listView都无需设置setFocusable(true),从而解决问题,具体可以见http://blog.csdn.net/ihrthk/article/details/7338791 
但这种方法对于动态变化的菜单需要配置多份layout文件

//设置在屏幕

View inflate = LayoutInflater.from(this).inflate(R.layout.activity_main, null);

    	popupWindow.showAtLocation(inflate, Gravity.BOTTOM, 0,0);

  

PopupWindow组件的使用问题的更多相关文章

  1. Android编程中常用的PopupWindow和Dialog对话框

    注意:PopupWindow组件的使用问题,PopupWindow是一个阻塞对话框,如果你直接在Activity创建的方法中显示它,则会报错:android.view.WindowManager$Ba ...

  2. 自定义PopupWindow

    PopupWindow,一个弹出窗口控件,可以用来显示任意View,而且会浮动在当前activity的顶部 自定义PopupWindow. 1.extends PopupWindow 2.构造方法中可 ...

  3. android PopupWindow使用实例

    注:点空白或菜单外隐藏popupwindow菜单: 但是,若点击有点击事件的组件则要再写代码手动隐藏: @Override public boolean onTouchEvent(MotionEven ...

  4. 使用PopupWindow

    PopupWindow可以用来实现弹出任意位置的菜单,比Context Menu和Option Menu灵活性更高.Android中弹出一个PopupWindow基本有两个方法: 1 2 //Disp ...

  5. 动态添加PopupWindow

    动态添加PopupWindow的方法private void showPopupWindow() { LayoutInflater inflater = LayoutInflater.from(thi ...

  6. 【Android UI设计与开发】7.底部菜单栏(四)PopupWindow 实现显示仿腾讯新闻底部弹出菜单

    前一篇文章中有用到 PopupWindow 来实现弹窗的功能.简单介绍以下吧. 官方文档是这样解释的:这就是一个弹出窗口,可以用来显示一个任意视图.出现的弹出窗口是一个浮动容器的当前活动. 1.首先来 ...

  7. 【Android UI设计与开发】6.底部菜单栏(三)使用Fragment+PopupWindow仿QQ空间最新版底部菜单栏

    直接看栗子吧,效果基本实现,界面微调和弹窗的优化,去做的话会很耗时说,暂时就酱紫了.上传效果动态图太大了,直接手机截图的效果图如下: 至于代码的实现主要就是自定义的菜单栏,和用 PopupWindow ...

  8. 【转】Android新组件Material Dialog,SwipeRefreshLayout,ListPopupWindow,PopupMenu等

    朝花夕拾----新组件的学习和使用 分类: Android UI2015-06-26 11:31 440人阅读 评论(0) 收藏 举报 uidialogMaterial   目录(?)[-] Mate ...

  9. android学习笔记17——对话框(PopupWindow)

    PopupWindow ==> PopupWindow可创建类似对话框的窗口,使用其创建对话框窗口的操作步骤: 1.调用PopupWindow构造器构造PopupWindow对象: 2.调用Po ...

随机推荐

  1. C/C++语言的标准库函数malloc/free与运算符new/delete的区别

    概括地说 1.malloc与free是C++/C的标准库函数,new/delete是C++的运算符,它们都可用于申请动态内存和释放内存. 2.对于非内部数据类型的对象而言,只用malloc/free无 ...

  2. 转:应用JMeter测试solr请求

    使用JMeter测试solr请求 一.安装JMeter 在官网http://jmeter.apache.org/download_jmeter.cgi下载JMeter 直接解压JMeter安装包 Li ...

  3. mysql出现Can't connect to MySQL server on 'localhost' (10061)的解决方法

    网上搜索的一: 今天把mysql数据库拷贝到另外一台机上,结果连不上,报“Can't connect to MySQL server on 'localhost' (10061)“错误 到网上sear ...

  4. Self Numbers

    Self Numbers Time Limit : 20000/10000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other) Tota ...

  5. DB层级

    最上层:              业务层 负载均衡:            LVS 代理层:           DB-PROXY DB层:            DB主库   DB从库 随着DB出 ...

  6. csdn的调查问卷,好多都不懂哈

    http://bss.csdn.net/cview/reg/?project_id=2412&identy_id=1538

  7. mysql 排序后获得某行的位置

    假设有test表,下图为表机构和数据,score表示积分.现在要查询积分排名为第几的id?? 查询语句 select id,score,(@rowno:=@rowno+1) as rowno from ...

  8. .htaccess文件url重写小记

    .htaccess文件url重写 当上一条规则匹配 并转换后 符合下一条规则的 继续下一条的匹配转换 RewriteRule ^shangpin-([0-9a-zA-Z]+)/category-([0 ...

  9. sqlserver 批量修改表前缀

    先把第一句话放到sqlserver查询器中执行一下.然后把查询结果复制出来,进行编辑...一看你就懂了..简单的sql语句拼装 select ' exec sp_rename "' + na ...

  10. 学习最短路建图 HUD 5521

    http://acm.hdu.edu.cn/showproblem.php?pid=5521 题目大意:有n个点,m个集合,每个集合里面的点都两两可达且每条边权值都是val,有两个人A, B,A在po ...