android 指定坐标弹出,【Android】在任意位置弹出PopupWindow

4c4c96dff7b6d58f737cd5a7c2cecdf5.png

又是一张毫不相关的图

前言

在日常的开发中,经常会有弹框的操作。实现弹框有两种选,PopupWindow或者Dialog,这里就先忽略Dialog。弹框可能会在各种位置出现,在指定View的上、下、左、右、左对齐、右对齐等...

而PopupWindow似乎就提供了showAsDropDown方法(请忽略showAtLocation,这边说的是相对于View显示),这~~就有点尴尬了。

PopupWindow

平时我们可能是这样用PopupWindow的:创建一个布局,再创建一个类继承PopupWindowpublic class TestPopupWindow extends PopupWindow {

public TestPopupWindow(Context context) {

super(context);

setHeight(ViewGroup.LayoutParams.WRAP_CONTENT);

setWidth(ViewGroup.LayoutParams.WRAP_CONTENT);

setOutsideTouchable(true);

setFocusable(true);

setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

View contentView = LayoutInflater.from(context).inflate(R.layout.popup_test,

null, false);

setContentView(contentView);

}

}然后直接使用它TestPopupWindow mWindow = new TestPopupWindow(this);

//根据指定View定位

PopupWindowCompat.showAsDropDown(mWindow, mButtom, 0, 0, Gravity.START);

//或者

mWindow.showAsDropDown(...);

//又或者使用showAtLocation根据屏幕来定位

mWindow.showAtLocation(...);

Gravity.LEFT(Gravity.START):相对于View左对齐;

Gravity.RIGHT(Gravity.END):相对于View靠右显示。Gravity.CENTER:在showAsDropDown()中是跟 Gravity.LEFT一样,在showAtLocation()中Gravity.CENTER才有效果得到效果

2552fc4efaa12a7efdb731eb0f9c5117.gif

left.gif

查了下showAsDropDown(),发现只能在指定控件的下面弹出,总感觉少了点什么~~

有时候我想弹在View的上面、左边、右边?怎么解?

2a6aa240b1a88ff6afc29cbe71a58d53.png

可能有机智的boy已经想到了showAsDropDown()中的另外两个参数,xoff、yoff。要利用这两个参数,不过不建议在代码中直接写。为什么?

如果你的PopupWindow宽高不

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值