popupwindow拦截返回点击
目的:弹窗只有点击按钮可以关闭。
前提:弹窗内有输入框
试了网上的一些方法
设置弹窗焦点 setFocusable(false) (会导致软键盘无法显示)
- 重写 onBackPressed 方法 (不会走这里)
- 为 popupwindow 设置 onKeyListener 监听 (不会走这里)
最终的解决方法:继承 PopupWindow
并重写 dismiss 方法
public class NonDismissPopupWindow extends PopupWindow {
public NonDismissPopupWindow(View contentView, int width, int height) {
super(contentView, width, height, true);
}
private boolean isDisMiss = false;
public void setIsDisMiss(boolean isDisMiss){
this.isDisMiss = isDisMiss;
}
@Override
public void dismiss() {
// 空实现,阻止默认关闭行为
// 或者通过条件控制是否关闭
if(isDisMiss){
super.dismiss();
}
}
}
手动关闭前改下 isDisMiss的值就可以了