Android(安卓)PopupWindow响应返回键最正确的实现方式
16lz
2021-01-25
之前在网上找了很多文章,实现PopupWindow返回键的方式如下:
popupWindow.setFocusable(true);ColorDrawable dw = new ColorDrawable(0x00000000);popupWindow.setBackgroundDrawable(dw);
这样是实现了点击返回键关闭PopupWindow。但是,我们没办法在PopupWindow关闭时做其他你想要的操作。
正确的方法是:
popupView = getLayoutInflater().inflate(R.layout.detail_popupwindow, null);popupView.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {dismissPopupWindow();}});popupView.setFocusable(true);popupView.setFocusableInTouchMode(true);popupView.setOnKeyListener(new View.OnKeyListener() {@Overridepublic boolean onKey(View v, int keyCode, KeyEvent event) {if (keyCode == KeyEvent.KEYCODE_BACK) {dismissPopupWindow();return true;}return false;}});if (popupWindow == null) {popupWindow = new PopupWindow(popupView, LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);popupWindow.setFocusable(true);}if (!popupWindow.isShowing())popupWindow.showAtLocation(view, Gravity.CENTER, 0, 0);
你可以在dismissPopupWindow()里做你想要的动作。
更多相关文章
- GitHub 标星 2.5K+!教你通过玩游戏的方式学习 VIM!
- Android(安卓)studio App开发 SQLite数据的使用
- 避免OOM的一种方式
- RxJava学习笔记(Schedulers)
- Android(安卓)同一个Service已经启动再多调用startService
- android svg资源使用具体操作
- Android——按钮操作
- android入门篇之ContentProvider学习笔记
- Android异步更新UI的方式之使用runOnUiThread(action)方法