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

1方案1:

1.1 设置

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

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

1.2 处理

@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.方案2:不支持menu键

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

最新文章

  1. 5 Convert Sorted List to Binary Search Tree_Leetcode
  2. Java Service Wrapper简介与使用
  3. NEC学习 ---- 布局 -三列,左侧自适应
  4. MVC5 + EF6 入门完整教程二:从前端的UI开始
  5. 重新想象 Windows 8.1 Store Apps (73) - 新增控件: DatePicker, TimePicker
  6. java 进制转换
  7. hdu 4112 Break the Chocolate(ceil floor)
  8. ubuntu 下搭建vsftp
  9. 代码静态分析工具PCLint, Splint
  10. Set up JBPM5.4 Final Installer to use MS SQL Server 2008 using JTDS(转)
  11. LabVIEW系列——合并错误(VI)的用法
  12. Unity3d开发IOS游戏 基础
  13. centos 更改hostname
  14. Rehat一键安装mysql脚本和备份数据库脚本
  15. 工作流引擎Activiti 专题
  16. 【spring】-- springboot配置全局异常处理器
  17. 第六十八天 js轮播图
  18. 如何在css中设置按钮button中包含图片文字对齐方式
  19. 只使用处理I/O的printDigit方法,编写一种方法一输出任意的double型量(可以是负的)
  20. MariaDB 数据库索引详解(9)

热门文章

  1. UR#34. 多项式乘法
  2. ArrayList遍历的4种方法
  3. 20170225-ALV tree 显示
  4. MYSQL初级学习笔记一:MYSQL常用命令和数据库操作(DDL)!(视频序号:初级_3,4)
  5. C++数组作为函数参数的几个问题(转)
  6. CoderForces343D:Water Tree(dfs序+线段树&&特殊处理)
  7. Bootstrap-CL:输入框组
  8. 禁用选择文本功能user-select
  9. RESTEasy使用json返回的例子
  10. Redis的相关命令