效果图:

265b140a92c7

PopupWindow是没有遮罩层效果的,这样看起来会显得很突兀。那么,如果要给PopupWindow添加遮罩层,又该如何实现呢?下面是实现的代码:

private void backgroundAlpha(float f) {

WindowManager.LayoutParams lp = ((Activity)context).getWindow().getAttributes();

lp.alpha = f;

((Activity)context).getWindow().addFlags(WindowManager.LayoutParams.FLAG_DIM_BEHIND);//背景变暗

((Activity)context).getWindow().setAttributes(lp);

}

上述方法通过在改变了窗口的透明度,只要在PopupWindow显示/隐藏时调用该方法降低/还原窗口透明度,就能达到遮罩层的效果。

// dismiss

backgroundAlpha(1.0f);

//show

backgroundAlpha(0.5f);

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐