Android PopupWindow响应返回键最正确的实现方式

之前在网上找了很多文章,实现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() {
	@Override
	public void onClick(View v) {
		dismissPopupWindow();
	}
});
popupView.setFocusable(true);
popupView.setFocusableInTouchMode(true);
popupView.setOnKeyListener(new View.OnKeyListener() {
	@Override
	public 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()里做你想要的动作。






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值