让PopWindow弹出在某个View的正上方

刚开始看的时候,以为使用showAsDropDown (View anchor, int xoff, int yoff, int gravity)通过设置gravity就行,可是试了一下不管用,只有Gravity.RIGHT这个字段能起作用,就是从anchor的右下角开始弹出。后来只能另外想一个方法,就是通过showAsDropDown(View anchor,int xoff, int yoff)去设置它的x,y偏移。x偏移就不用说了,要想在anchor的左上方弹出,主要是设置y偏移,y偏移的值为-anchor.getHeight-popWindow.getHeight。其中popWindow.getHeight不能直接这样调,因为popWindow没显示出来的时候,还没有执行onMeasure方法,所以这个时候是没有测量宽高的,这个值需要根据new PopWindow的时候设置的值去确定。如果设置PopWindow的时候这个值是WrapContent,那就去取PopWindow的内容的值,这个值比如在XMl文件中设置的是40dp,那么把40dp转换成px传过去就可以了。可以通过如下的方法去转换:

private int convertDpToPx(int dp){
    DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
    return Math.round(dp*displayMetrics.density);
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值