目的:弹窗只有点击按钮可以关闭。
前提:弹窗内有输入框
试了网上的一些方法
设置弹窗焦点 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;}@Overridepublic void dismiss() {// 空实现,阻止默认关闭行为// 或者通过条件控制是否关闭if(isDisMiss){super.dismiss();}}
}
手动关闭前改下 isDisMiss的值就可以了