首先講一個網上的方法:
popupwindow彈出后,屏幕背景變成半透明這個效果很普通。實現的方法也很多。我使用的可能是最簡單的一種,就是設置一下getWindows的透明度。
/** * 設置添加屏幕的背景透明度 1,:全透明;0.5:半透明 0~1,取自己想到的透明度 * @param bgAlpha */ public void backgroundAlpha(float bgAlpha) { WindowManager.LayoutParams lp = activity.getWindow().getAttributes(); lp.alpha = bgAlpha; //0.0-1.0 activity.getWindow().setAttributes(lp); }
1. PopupWindow 彈出時設置:
backgroundAlpha(0.5f);
2.PopupWindow 消失時,變成全透明,這里可以監聽PopupWindow 消失
mPopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() { @Override public void onDismiss() { backgroundAlpha(1f); } });
完成,現在的問題是,后來發現,有個人手機,會閃屏,並且有的手機不能正常顯示背景半透明;
方法二:
讓Popupwindow 全屏,顯示區在下方,其它區域半透明
如圖:
注意:在點擊 背景的地方做 一個View,如果被點擊,popupwindow消失 ;
另外設置最大高度,見demo