关于PopupWindow的显示(1)—— showAsDropDown方法

在开发PopupWindow相关功能时,我们主要处理PopupWindow两方面的工作:1.PopupWindow的UI展示;2.PopupWindow的显示方式,弹出位置。这篇blog主要讲PopupWindow弹出位置。

PopupWindow弹出方式有2种:1.showAsDropDown ; 2.showAtLocation() 两个方法的不同主要体现在,弹出时的坐标系,换句话说就是参照物不同。本文主要对showAsDropDown()展开说明。

为了精确(准确无误)的表现出PopupWindow坐标位置,我们的demo中设置setClippingEnabled(false),查看setClippingEnabled方法使用的详解

public void showAsDropDown(View anchor, int xoff, int yoff) {
        showAsDropDown(anchor, xoff, yoff, DEFAULT_ANCHORED_GRAVITY);
    }

方法第一个参数View变量命名为anchor,真的是很形象。它就是弹窗的锚定点。或者再详细的讲,这个view就是弹窗的参照物,它的左下角就是PopupWindow眼中的原点。如下图中黄色高亮区域代表View anchor,它的左下角为PopupWindow眼中坐标系原点(0,0)。坐标系原点找到后,坐标系正方向如下图所示。

方法第二,三参数xOff,yOff,表示popupWindow距离原点的偏移量,具体讲就是PopupWindow左上角(图中蓝色实心点)距离(0,0)的偏移量。

下图展示了几种偏移情况。

 

下面3图分别是实际demo 红框为anchor,红框左下角为(0,0)

Demo1

showAsDropDown(mPopupWindowDropDownShow, 100, 100);

 

Demo2

showAsDropDown(mPopupWindowDropDownShow, 0, 0);

 Demo3

showAsDropDown(mPopupWindowDropDownShow, -100, 100);

 Demo 4

showAsDropDown(mPopupWindowDropDownShow, -100, -100);

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值