// 用于PopupWindow的ViewView contentView=LayoutInflater.from(context).inflate(layoutRes, null, false);// 创建PopupWindow对象,其中:// 第一个参数是用于PopupWindow中的View,第二个参数是PopupWindow的宽度,// 第三个参数是PopupWindow的高度,第四个参数指定PopupWindow能否获得焦点PopupWindow window=new PopupWindow(contentView, 100, 100, true);// 设置PopupWindow的背景window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));// 设置PopupWindow是否能响应外部点击事件window.setOutsideTouchable(true);// 设置PopupWindow是否能响应点击事件window.setTouchable(true);// 显示PopupWindow,其中:// 第一个参数是PopupWindow的锚点,第二和第三个参数分别是PopupWindow相对锚点的x、y偏移window.showAsDropDown(anchor, xoff, yoff);// 或者也可以调用此方法显示PopupWindow,其中:// 第一个参数是PopupWindow的父View,第二个参数是PopupWindow相对父View的位置,// 第三和第四个参数分别是PopupWindow相对父View的x、y偏移// window.showAtLocation(parent, gravity, x, y);
通常情况下,调用showAsDropDown方法后PopupWindow将会在锚点的左下方显示(drop down)。但是,有时想让PopupWindow在锚点的上方显示,或者在锚点的中间位置显示,此时就需要用到showAsDropDown方法的xoff和yoff参数了。
这里我们的目的不仅包括上面提到的两种情况(锚点上方或锚点中部),而是囊括了水平和垂直方向各5种显示方式:
水平方向:
ALIGN_LEFT:在锚点内部的左边;
ALIGN_RIGHT:在锚点内部的右边;
CENTER_HORI:在锚点水平中部;
TO_RIGHT:在锚点外部的右边;
TO_LEFT:在锚点外部的左边。
垂直方向:
ALIGN_ABOVE:在锚点内部的上方;
ALIGN_BOTTOM:在锚点内部的下方;
CENTER_VERT:在锚点垂直中部;
TO_BOTTOM:在锚点外部的下方;
TO_ABOVE:在锚点外部的上方。
具体见jzyhywxz博客
转载只为学习,若有侵权,通知即删。