-
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();复制代码