setOutsideTouchable(true);
-
设置之后可能会遇到这么一问题:点击外边缘PopWindow消失了, 但是点击位置如果设置有其他点击事件,那也就跟着触发了, 也就是我本想PopWindow消失, 但是却同时触发了其他操作。解决:
setOutsideTouchable(true);
// fix点击外边缘popWindow消失bug; 点击外部PopWindow弹框消失, 禁止触发其他点击事件
setTouchable(true);
setFocusable(true);
/**
* 设置屏幕的背景透明度
*/
public void backgroundAlpha(float bgAlpha) {
WindowManager.LayoutParams lp = getActivity().getWindow().getAttributes();
lp.alpha = bgAlpha;
getActivity().getWindow().setAttributes(lp);
}
调用
private void showWaitHandleDialog() {
if (mWaitHandleDialog == null) {
mWaitHandleDialog = new WaitHandlePopWindow(getContext(), bean -> {
// .....
});
mWaitHandleDialog.setOnDismissListener(() -> {
// 消失的时候设置透明度, 恢复页面显示
backgroundAlpha(1f);
});
}
if (mWaitHandleDialog.isShowing()) {
mWaitHandleDialog.dismiss();
} else {
mWaitHandleDialog.showAsDropDown(mTopBar, DensityUtils.dpToPx(getContext(), 170), 0);
// 显示的时候设置透明度
backgroundAlpha(0.7f);
}
}
网友评论