android popupwindow 的使用方法()

在项目中一直都用过popupwindow,显示弹框,,等,但都是模棱两可 ,今天理解了 特此记录一下


1.使用场景

    PopupWindow,顾名思义,就是弹窗,在很多场景下都可以见到它。例如ActionBar/Toolbar的选项弹窗,一组选项的容器,或者列表等集合的窗口等等。

2.基本用法

   

使用PopupWindow很简单,可以总结为三个步骤:

  1. 创建PopupWindow对象实例;
  2. 设置背景、注册事件监听器和添加动画;
  3. 显示PopupWindow。
下面贴一段代码
   
 1     // 用于PopupWindow的View
 2     View contentView=LayoutInflater.from(context).inflate(layoutRes, null, false);
 3     // 创建PopupWindow对象,其中:
 4     // 第一个参数是用于PopupWindow中的View,第二个参数是PopupWindow的宽度,
 5     // 第三个参数是PopupWindow的高度,第四个参数指定PopupWindow能否获得焦点  ,其中有好几个构造,我只是用了其中一个
 6     PopupWindow window=new PopupWindow(contentView, 100, 100, true);
 7     // 设置PopupWindow的背景   必须设置背景,要不setoutsidetouchable(true)不管用,按back键也不会管用,具体看源码,如果背景不为空的话,会在外面套一层布局
 8     window.setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));
 9     // 设置PopupWindow是否能响应外部点击事件
10     window.setOutsideTouchable(true);
11     // 设置PopupWindow是否能响应点击事件,具体是其中的item的响应事件
12     window.setTouchable(true);
13     // 显示PopupWindow,其中:
14     // 第一个参数是PopupWindow的锚点,第二和第三个参数分别是PopupWindow相对锚点的x、y偏移
15     window.showAsDropDown(anchor, xoff, yoff);
16
19     window.showAtLocation(parent, gravity, x, y);      

重点说说showatloacation (parent,gravity,x,y)参数使用方法

第一个参数:parent其实就是一个view,这个view是要能获取到window唯一标示的(也就是只要能获取到window 标示,view是什么控件都可以),应该是表示这个popupwindow添加到哪个window里面,对控制popupwindow出现位置没有影响,只要是activity当中的控件就可以

第二个参数:请记住屏幕原点是屏幕的左上角。Gravity.TOP | Gravity.RIGHT指的就是屏幕的右上角,那么popupwindow的中心点坐标是(屏幕宽,0)。popupwindow默认是在屏幕的中间,也就是Gravity.LEFT表示popupwindow的中心点坐标是(0,1/2屏幕高);gravity.top的坐标中心就是(1/2屏幕宽,0),别的同理

第三、四个参数:偏移量的方向与第二个参数有关。Gravity.TOP | Gravity.RIGHT,以屏幕右上角为原点,popupwindow往X轴负方向偏移10个像素,往Y轴正方向偏移10个像素;如果是Gravity.BOTTOM| Gravity.LEFT,以屏幕左下角为原点,pw往X轴正方向偏移10个像素,往Y轴正方向偏移10个像素。

注意:这个偏移量可以是正的,也可以是负的。

你可能感兴趣的:(android)