1,PopupWindow的构造方法:
contentView为要显示的view,width和height为宽和高,值为像素值,也可以是MATCHT_PARENT和WRAP_CONTENT。
1,public PopupWindow(Context c); 传入context 参数获取popupwindow对象
2,public PopupWindow(View view);; 传入View 参数获取popupwindow对象
popwindow.setContentView(view);
public View getContentView(); PopupWindow提供的获取试图的方法
3, public PopupWindow(View view ,int width,int height); width 为pop的宽 height为pop的高
4, public PopupWindow(View view ,int width,int height,boolean facusable);
2,PopupWindow的显示方法:
1,showAsDropDown(View v) //相对v控件的正下方
2, showAsDropDown(View v, int x, int y) //相对v控件有偏移,x轴偏移,x>0表示向左 ,x<0表示向右,y >0表示向下 反之 向上
3,showAtLocation(View parent, int gravity,int x, int y)//相对父控件位置 中央Gravity.CENTER,下方Gravity.BOTTOM x,y 偏移量
3,pop函数:
1,public void dicmiss ();//pop消失时调用
2,public void setFocusable(boolean focusable) // 设置此参数获得焦点,否则无法点击
3,public void setTouchable(boolean touchable) // 设置可拦截事件
4,public void setOutsideTouchable(boolean touchable); //点击窗口外边窗口消失时设置为true
5,public void setBackgraoundDrawable(Drawable background)//需要设置一下此参数,点击外边才可消失
// 如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框
6,public void setAnimationStyle(int animationStyle);//设置pop的动画 先在anim中定义进入和出去的动画,然后再在style 中创建<style name = ""><item />item /></style>
<style name="pop_animation"> <item name="android:windowEnterAnimation">@anim/enter_animation</item> <item name="android:windowExitAnimation">@anim/out_animation</item> </style>
popupWindow = new PopupWindow(popView, 300, 400, true); if(!popupWindow.isShowing()) {// 如果不设置PopupWindow的背景,无论是点击外部区域还是Back键都无法dismiss弹框 // 我觉得这里是API的一个bug popupWindow.setBackgroundDrawable(new BitmapDrawable()); //设置点击窗口外边窗口消失 popupWindow.setOutsideTouchable(true); // 设置此参数获得焦点,否则无法点击 popupWindow.setFocusable(true); popupWindow.setTouchInterceptor(new View.OnTouchListener() {@Override public boolean onTouch(View view, MotionEvent motionEvent) {return false; // 这里如果返回true的话,touch事件将被拦截 // 拦截后 PopupWindow的onTouchEvent不被调用,这样点击外部区域无法dismiss }}); if (popupWindow.isShowing()) {// 隐藏窗口,如果设置了点击窗口外小时即不需要此方式隐藏 popupWindow.dismiss(); } else {// 显示窗口 // popupWindow.showAsDropDown(ivChoose);//任意控件的正下方 popupWindow.setAnimationStyle(R.style.pop_animation); popupWindow.showAtLocation( rootview, Gravity.BOTTOM, 0, 0);//从屏幕底部弹出 }}