PopupWindow 彈出時背景變暗

 

 

下面的PopupWindow  的高是相對於屏幕高設計,寬是獲取的某一個控件的寬設置,位置位於某控件的上方,紅色部分是設置彈出時屏幕變暗的。ide

 

 1      //設置contentView
 2         View contentView = LayoutInflater.from(this).inflate(R.layout.popwindow_submit, null);
 3         photoPopWindow = new PopupWindow(contentView, WindowManager.LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.MATCH_PARENT, true);
 4         photoPopWindow.setContentView(contentView);
 5         //獲取屏幕寬高度
 6         DisplayMetrics dm = this.getResources().getDisplayMetrics();
 7         int screenWidth = dm.widthPixels;
 8         int screenHeight = dm.heightPixels;
 9         //根據屏幕寬高度設置popwindow大小
10         photoPopWindow.setWidth((int)(upload.getWidth()));
11         photoPopWindow.setHeight((int)(screenHeight * 0.13));
12 
13         //設置各個控件的點擊響應
14         rl_takePhoto = contentView.findViewById(R.id.rl_takePhoto);
15         rl_choicePhoto = contentView.findViewById(R.id.rl_choicePhoto);
16         rl_takePhoto.setOnClickListener(new View.OnClickListener() {
17             @Override
18             public void onClick(View v) {
19                 keep.setBackgroundColor(getResources().getColor(R.color.white));
20                 upload.setBackgroundColor(getResources().getColor(R.color.color_success));
21                 paste.setBackgroundColor(getResources().getColor(R.color.white));
22                 submit();
23                 //上傳數據
24                 photoPopWindow.dismiss();
25             }
26         });
27         rl_choicePhoto.setOnClickListener(new View.OnClickListener() {
28             @Override
29             public void onClick(View v) {
30                 submitPhoto();
31                 //上傳圖片
32                 photoPopWindow.dismiss();
33             }
34         });
35         int[] location = new int[2];
36         //在控件上方顯示
37         int[] location1 = new int[2];
38         upload.getLocationOnScreen(location);
39         //photoPopWindow.showAtLocation(upload,Gravity.NO_GRAVITY, location1[0],location1[1]-photoPopWindow.getHeight());
40         photoPopWindow.showAtLocation(upload,Gravity.NO_GRAVITY, location1[0]+upload.getWidth(),screenHeight-photoPopWindow.getHeight()-upload.getHeight());
41 
42         // 設置背景顏色變暗
43         WindowManager.LayoutParams lp = this.getWindow().getAttributes();
44         lp.alpha = 0.7f;
45         this.getWindow().setAttributes(lp);
46         photoPopWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
47 
48             @Override
49             public void onDismiss() {
50                 WindowManager.LayoutParams lp = getWindow().getAttributes();
51                 lp.alpha = 1f;
52                 getWindow().setAttributes(lp);
53             }
54         });
相關文章
相關標籤/搜索