注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

姑射道人的博客

博客新地址:nixuchen.com

 
 
 

日志

 
 

Android中PopupWindow点击窗口之外和返回键消失,界面锁定的实现  

2014-07-10 14:31:08|  分类: android |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

这几天做谷居网android应用到混天暗地的程度了。。

做一个加入灵感集的操作,需要用户注册,弹出这么一个PopupWindow的提示框。

要实现的功能很简单,点击稍后提醒以及键盘的返回键要能退出PopupWindow,为了达到鼓励用户注册的目的,点击其他部分窗口不会消失,毕竟咱的目的是更多的用户注册不是,点击返回键还能使其消失,毕竟返回键离手指头更近。

当然,我会告诉你点击其他部分怎么让它消失,以及怎么锁定后面的界面。往下看吧。

device-2012-12-20-215234.png

 


PopupWindow出现之后,默认的是所有的操作都无效的,除了HOME键。而且是可以操作后面的界面的。

想要锁定后面的界面,很简单,只需要让PopupWindow是focusable的。


  1. popupWindow.setFocusable(true);  

这样,显示的时候,popupWindow获取啦焦点,后面的内容为非活动。

但是这样不能实现点击屏幕其他部分使其消失,返回键也不行。

这时候要给popupWindow设置一个一个BackgroundDrawable,如果你已经定义好布局,怕破坏掉样式,只需要设置一个空的Drawable即可。


  1. popupWindow.setBackgroundDrawable(new PaintDrawable());  

这样,点击屏幕其他部分和返回键都能实现使其消失的功能了。

 

我的情况和上面都不一样,不能让用户点一下屏幕其他地方就消失了,人家想注册呢,不小心碰到屏幕其他地方了,一下就没了,我可能就少了一个注册用户。

我要实现的仅仅是返回键使popupwindow消失。这里需要重写view的onKeyListener,这个view应该是popwindow的view,当然是最parent的那个view。上代码。


  1. View layout = inflater.inflate(R.layout.account_dialog,  
  2.         (ViewGroup) activity.findViewById(R.id.account_dialog));  
  3. layout.setFocusable(true); // 这个很重要  
  4. layout.setFocusableInTouchMode(true);  
  5.   
  6. popupWindow = new PopupWindow(layout);  
  7. popupWindow.setFocusable(true);  
  8.   
  9. // 重写onKeyListener  
  10. layout.setOnKeyListener(new OnKeyListener() {  
  11.     @Override  
  12.     public boolean onKey(View v, int keyCode, KeyEvent event) {  
  13.         if (keyCode == KeyEvent.KEYCODE_BACK) {  
  14.             accountDialog.dismiss();  
  15.             accountDialog = null;  
  16.             return true;  
  17.         }  
  18.         return false;  
  19.     }  
  20. });  

 

看明白了吗?

要让生成popupwindow的那个view也是focusable的,保险起见,设置FocusableInTouchMode也为true。

这样再重写那个view的onKeyListener就行了。


转摘自:http://www.houxiyang.com/archives/70/

  评论这张
 
阅读(806)| 评论(0)
推荐 转载

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017