-
Android的对话框有两种:PopupWindow AlertDialog.他们的不同点在于AlertDialog的位置固定,而PopupWindow的位置可以随意
PopupWindow的位置按照有无偏移,可以分为偏移和无偏移两种
按照参照物的不同,可以分为相对于某个控件(Anchor锚)和相对于父控件具体如下:
mPopupWindow.showAsDropDown(View anchor); 相对于某个控件的位置(正下方),无偏移
mPopupWindow.showAsDropDown(View anchor,int oxoff,int yoff); 相对于某个控件的位置,有偏移
mPopupWindow.showAtLocation(View parent,int gravity,int x,int y); 相对于父控件的位置,例如正中央Gravity.CENTER,下方Gravity.BOTTOMdeng )
//创建一个PopupWindow
//参数1、contentView指定PopupWindow的内容
//参数2、width
//参数3、height
PopupWindow mPopupWindow = new PopupWindow(textView, ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT);
//设置PopupWindow的相关属性
//设置背景
mPopupWindow.setBackgroundDrawable(getResources().getDrawable(R.mipmap.ic_launcher));
mPopupWindow.getBackground().setAlpha(100); //设置透明度
//mPopupWindow.setAnimationStyle(); //设置动画效果
//设置点击窗口外边窗口消失
mPopupWindow.setOutsideTouchable(true);
mPopupWindow.setFocusable(true);
mPopupWindow.setTouchable(true);
//防止虚拟软键盘呗弹出菜单遮住
mPopupWindow.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_NOTHING);
//显示弹窗
//相对于某个控件的位置(正下方) 无偏移
mPopupWindow.showAsDropDown(v);
//相对于某个控件的位置(正左下方) 有偏移
mPopupWindow.showAsDropDown(v,50,50); //x.y方向各偏移50
//相对于父控件的位置 无偏移
mPopupWindow.showAtLocation(v, Gravity.CENTER,0,0);
//相对于父控件的位置,有偏移
mPopupWindow.showAtLocation(v,Gravity.BOTTOM,0,50);
//关闭弹窗
mPopupWindow.dismiss();