您的位置:首页 > 运维架构

一个全屏PopupWindow的小问题

2016-07-04 10:01 465 查看
之前需要做一个全屏控件,大致是微信输入密码的那个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里边,每次弹出调用一次,有点不好,但是实现了就没纠结了
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: