欢迎光临
专注android技术,聚焦行业精粹,我们一直在努力

Android PopupWindow使用小结

1、控件介绍

我们有时会有这样的需求,点击界面上的某个界面元素,会在该元素的旁边弹出一个浮层,这个浮层用于显示对该元素的消息描述。

2、控件使用

2.3、浮层展示

要展示浮层我们需要用到PopupWindow控件,这个控件在Android  API level 1 就引入了,所以可以直接使用。

一个简单的使用示例如下:

2.2、控件事件

如果想要实现这样的交互,例如触摸某个界面元素弹出浮层,松开时隐藏浮层。我们可以监听该元素的onTouch事件,并拦截ACTION_DOWN和ACTION_MOVE,这样该元素可以监听ACTION_UP事件,然后在该事件中实现浮层的dismiss,代码示例如下:

2.1、控件展示位置

想要控制浮层的展示位置,我们需要使用到showAtLocation方法,该方法包含四个参数:

其中parent非常重要,它所在的Window的坐标就是浮层的起始坐标(0,0)。如果你是在Activity里面显示浮层,那么这个浮层起始坐标就是屏幕的(0,0)位置;如果parent是在Dialog对话框中,那么浮层的其实位置是dialog所在window的左上角(0,0)位置。也就是说showAtLocation的参数x和y是相对偏移量,是有可能为负值的。

2.1.1、X,Y 坐标

下面有两张图来描述浮层的位置计算方法:

1、Activity里面元素(即parent在Activity里面)的浮层

2、Dialog或Window里面元素(即parent在Dialog或window里面)的浮层

注意因为parent元素在对话框里面,所以此时的(0,0)坐标在对话框的左上角,而非屏幕位置的左上角,

获取x,y偏移量的代码示例如下:

2.1.2、Gravity使用

如果你不需要精确的计算X, Y 位置,你可以用gravity来实现居中,靠左等效果。你也可以结合X,Y 坐标一起使用。下面以X,Y 坐标为(0,0)为例来看Gravity对popupwindow位置的影响:

代码示例:

2.1.2.1、居中Gravity.CENTER

x,y坐标设置为(0,0), Gravity设置为Center

2.1.2.2、靠边展示

  • Gravity.TOP
  • Gravity.BOTTOM
  • Gravity.LEFT
  • Gravity.RIGHT

x,y 设置为(0,0),Gravity分别设置为上面列出的4个值,展示效果如下:

Top和Bottom 默认是水平居中的,如果你想要让popwindow在左上方,可以用多个gravity组合来实现,具体如下:

2.1.2.3、Gravity组合展示

  • Gravity.TOP | Gravity.LEFT
  • Gravity.TOP | Gravity.RIGHT
  • Gravity.BOTTOM | Gravity.LEFT
  • Gravity.BOTTOM | Gravity.RIGHT

x,y 设置为(0,0),Gravity分别设置为上面列出的4个组合值,展示效果如下:

2.1.2.4、x,y坐标和Gravity结合

你可以在调用showAtLocation方法时传入x,y坐标来设置偏移量,代码示例:

结合Gravity的使用示例如下:

我们可以看出这个popupwindow在屏幕下方,并举例屏幕底部300px,同时它是水平居中的。我们知道gravity设置为Bottom时,默认是在屏幕下方且水平居中的,此时设置y的值为300px,那么这个y的值是相对屏幕左下角往上方向偏移了300px。所以x,y偏移的方向是和gravity相关联的。

赞(1) 打赏
未经允许不得转载:花花鞋 » Android PopupWindow使用小结
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

国内精品Android技术社区

联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏