一个全屏PopupWindow的小问题

来源:互联网 发布:qq空间抢车位数据恢复 编辑:程序博客网 时间:2024/06/07 09:57

之前需要做一个全屏控件,大致是微信输入密码的那个dialog的样子~中间一个框是文本,下面靠底的一个自定义键盘。

选择了PopupWindow。

public class MyPopupWindow extends PopupWindow

构造函数里

View view = View.inflate(activity,R.layout.dialog_wheel_select,null);setContentView(view);this.setWidth(ViewGroup.LayoutParams.MATCH_PARENT);this.setHeight(ViewGroup.LayoutParams.MATCH_PARENT);ColorDrawable dw = new ColorDrawable(0x90000000);this.setBackgroundDrawable(dw);

然后

  showAsDropDown(view);

view 是自己写的顶部title

后来发现这个PopupWindow会超出底部屏幕,超出部分大概就是状态拦➕标题栏的高度。于是一翻折腾

   private  void setLayoutPraram(BaseActivity activity){        DisplayMetrics metrics = new DisplayMetrics();        activity.getWindowManager().getDefaultDisplay().getMetrics(metrics);        Rect frame = new Rect();        activity.getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);        //状态栏        int statusBarHeight = frame.top;        //自定义标题栏高度        int toolbarHeight = activity.getToolBar().getView().getHeight();        //屏幕高度        int mheight = metrics.heightPixels;        this.setHeight(mheight - toolbarHeight - statusBarHeight);    }    public void show(View view,BaseActivity activity){        setLayoutPraram(activity);        super.showAsDropDown(view);    }

其中 setLayoutPraram 这个里方法不能在activity的oncreate里面调用,调试会发现获取的几个高度都是 0。

所以我放到了show里边,每次弹出调用一次,有点不好,但是实现了就没纠结了

1 0
原创粉丝点击