欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Android PopupWindow控件使用总结及demo

程序员文章站 2022-05-31 10:56:02
...

使用步骤:

  1. 创建PopupWindow对象实例;
  2. 设置背景、注册事件监听器和添加动画;
  3. 显示PopupWindow。

其中,第二步是可选的(不过基本上都要进行第二步的设置)

 // 用于PopupWindow的View
            View mTopPopupWindow = LayoutInflater.from(this).inflate(R.layout.home_card_detail_move_popwindow, null);
            // 创建PopupWindow对象,其中:
            // 第一个参数是用于PopupWindow中的View,第二个参数是PopupWindow的宽度,
            // 第三个参数是PopupWindow的高度,第四个参数指定PopupWindow能否获得焦点
            popupWindow = new PopupWindow(mTopPopupWindow, mTopPopupWindow.getMeasuredWidth(), mTopPopupWindow.getMeasuredHeight(), false);
            popupWindow.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
            popupWindow.setOutsideTouchable(true);
            // 设置PopupWindow是否能响应点击事件
            popupWindow.setTouchable(true);
            // 显示PopupWindow,其中:
            // 第一个参数是PopupWindow的锚点,第二和第三个参数分别是PopupWindow相对锚点的x、y偏移
            popupWindow.showAsDropDown(popBtn1, 100, 100);
            // 或者也可以调用此方法显示PopupWindow,其中:
            // 第一个参数是PopupWindow的父View,第二个参数是PopupWindow相对父View的位置,
            // 第三和第四个参数分别是PopupWindow相对父View的x、y偏移
            // window.showAtLocation(parent, gravity, x, y);

注意:

1 window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
2  window.setOutsideTouchable(true);

必须同时设置后当你点击PopupWindow的外部或者按下“Back”键时,PopupWindow才会消失

使用showAsDropDown方法显示PopupWindow

通常情况下,调用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:在锚点外部的上方。

下面来看张图:

Android PopupWindow控件使用总结及demo

Android PopupWindow控件使用总结及demo

 

使用setAnimationStyle方法添加动画

 

demo下载地址

 

参考:https://github.com/PopFisher/SmartPopupWindow

相关标签: popupwindow