转于:http://houxiyang.com/archives/70/
----------------------------------------------------------------
做一个加入灵感集的操作,需要用户注册,弹出这么一个PopupWindow的提示框。
要实现的功能很简单,点击稍后提醒以及键盘的返回键要能退出PopupWindow,为了达到鼓励用户注册的目的,点击其他部分窗口不会消失,毕竟咱的目的是更多的用户注册不是,点击返回键还能使其消失,毕竟返回键离手指头更近。
当然,我会告诉你点击其他部分怎么让它消失,以及怎么锁定后面的界面。往下看吧。
PopupWindow出现之后,默认的是所有的操作都无效的,除了HOME键。而且是可以操作后面的界面的。
想要锁定后面的界面,很简单,只需要让PopupWindow是focusable的。
popupWindow.setFocusable(true);
这样,显示的时候,popupWindow获取啦焦点,后面的内容为非活动。
但是这样不能实现点击屏幕其他部分使其消失,返回键也不行。
这时候要给popupWindow设置一个一个BackgroundDrawable,如果你已经定义好布局,怕破坏掉样式,只需要设置一个空的Drawable即可。
popupWindow.setBackgroundDrawable(new PaintDrawable());
这样,点击屏幕其他部分和返回键都能实现使其消失的功能了。
我的情况和上面都不一样,不能让用户点一下屏幕其他地方就消失了,人家想注册呢,不小心碰到屏幕其他地方了,一下就没了,我可能就少了一个注册用户。
我要实现的仅仅是返回键使popupwindow消失。这里需要重写view的onKeyListener,这个view应该是popwindow的view,当然是最parent的那个view。上代码。
View layout = inflater.inflate(R.layout.account_dialog, (ViewGroup) activity.findViewById(R.id.account_dialog)); layout.setFocusable(true); // 这个很重要 layout.setFocusableInTouchMode(true); popupWindow = new PopupWindow(layout); popupWindow.setFocusable(true); // 重写onKeyListener layout.setOnKeyListener(new OnKeyListener() { @Override public boolean onKey(View v, int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BACK) { accountDialog.dismiss(); accountDialog = null; return true; } return false; } });
看明白了吗?
要让生成popupwindow的那个view也是focusable的,保险起见,设置FocusableInTouchMode也为true。
这样再重写那个view的onKeyListener就行了。
相关推荐
主要介绍了android PopupWindow点击外部和返回键消失的解决方法,非常具有实用价值,需要的朋友可以参考下。
popupWindow 动画 和点击PopupWindow的后 手机的返回键
AS写的PopupWindow demo blog:http://blog.csdn.net/shenyuanqing/article/details/48136639
android中popupWindow使用案列。点击按钮,显示出菜单按钮。
android popupwindow 底部灰色背景
Android开发之PopupWindow实现弹窗
本人亲测的PopupWindow监听返回键,可以监听到返回键的状态,动态设置返回键dismiss的时机
android页面开发中会碰到这种需求:点击页面顶部工具栏某个按钮时需要弹出下拉菜单。该工程利用PopupWindow实现了点击工具栏弹出下拉菜单的功能的主要实现类 .
Android PopupWindow实现右侧、左侧和底部弹出菜单 效果图:http://blog.csdn.net/jianfengwen/article/details/48629217
主要介绍了Android中PopupWindow响应返回键并关闭的2种方法,本文讲解了最简单的方法、最通用的方法,需要的朋友可以参考下
AndroidListView+PopupWindow实现item点击弹出PopupWindow 博客地址:https://blog.csdn.net/dreams_deng/article/details/104618270
实现在android的popupwindow中显示listview.docx
自定随机密码键盘并适配计算界面需要滚的高度防止弹出的popupwindow遮盖点击的输入框
Android Spinner PopupWindow 实现弹出框
android通过使用popupwindow控件实现自定义menu菜单
android自定义PopupWindow,实现类似微信弹框类别选项。
而在点击back的时候,Dialog会消失。 (3)Popupwindow不会给页面其他的部分添加蒙层,而Dialog会。 (4)Popupwindow没有标题,Dialog默认有标题,可以通过dialog.requestWindowFeature(Window.FEATURE_NO_TITLE)...
Android之用PopupWindow实现弹出listview形式菜单.rar
android 封装一个通用PopupWindow,避免重复造轮子,简化代码,方便管理。