项目中要求弹出popwindow背景虚化,设置背景后发现点击popwindow外部区域不会让背景变亮回来,如下代码解决了一切问题。
在onclick里面点击要弹出的popwindow
case 1 : //弹出popWiondw View.OnClickListener itemsOnClicks = new View.OnClickListener() { @Override public void onClick(View v) { menuWindow.dismiss(); backgroundAlpha(1f); } }; backgroundAlpha(0.5f); menuWindow = new categoryPopWiondow(getContext(),itemsOnClicks); menuWindow.setBackgroundDrawable(new BitmapDrawable()); //位置 // menuWindow.showAtLocation(getActivity().findViewById(R.id.tv_category), Gravity.CENTER_VERTICAL | Gravity.CENTER_HORIZONTAL, 0, 0); menuWindow.showAtLocation(getActivity().findViewById(R.id.tv_category), Gravity.CENTER, ViewGroup.LayoutParams.FILL_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT); menuWindow.setOnDismissListener(new PopupWindow.OnDismissListener() { @Override public void onDismiss() { menuWindow.dismiss(); backgroundAlpha(1f); } }); break;
/** * 设置添加屏幕的背景透明度 * @param bgAlpha */ public void backgroundAlpha(float bgAlpha) { WindowManager.LayoutParams lp = getActivity().getWindow().getAttributes(); lp.alpha = bgAlpha; //0.0-1.0 getActivity().getWindow().setAttributes(lp); getActivity().getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND); }