这几天都在研究PopupWindow,暂时遇到一个坑,就是获取宽和高。
↓↓↓↓↓↓↓↓↓↓↓先说正确做法↓↓↓↓↓↓↓↓↓↓↓
1.这是我的一个继承了PopupWindow的自定义类OnePopupWindow中的 一个构造方法。
public OnePopupWindow(Context context,View popupWindowView) { super(context); mContext=context; popupWindowView.measure(View.MeasureSpec.UNSPECIFIED,View.MeasureSpec.UNSPECIFIED); setWidth(WindowManager.LayoutParams.WRAP_CONTENT); setHeight(WindowManager.LayoutParams.WRAP_CONTENT); setBackgroundDrawable(new ColorDrawable(0x33000000)); setFocusable(true); setTouchable(true); setOutsideTouchable(true); setAnimationStyle(R.style.up_dowm_anim); setContentView(popupWindowView);
重点是下面这句,作用是先让布局绘制出来,确认布局的宽和高。如果不写这句的话在第一次调用popup类的时候会获取错误的宽高。
popupWindowView.measure(View.MeasureSpec.UNSPECIFIED,View.MeasureSpec.UNSPECIFIED);
2.然后在需要获取popupwindow的宽高地方使用下面代码即可(如果不先用)
popupWindow.getContentView().getMeasuredWidth());
popupWindow.getContentView().getMeasuredHeight();