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的值就可以了
