结合popwindow与gridview的一例

本文分享了在项目中使用PopupWindow时遇到的问题及解决办法,包括如何准确地定位PopupWindow的尖角位置以指向目标元素,以及如何通过简单的设置使PopupWindow在点击外部区域时能够自动关闭。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目中需要实现一个gridview 点击某项弹出一个popupwindow 最蛋疼的是一个突出的尖角指定点击的哪一项


 

然后还需要判断底部空间是否足够显示弹出的popupwindow 

这个功能点 我遇到了两个问题

 

第一个就是尖角的定位了 在一个地方困住了好久 

点击某一个item 这时候getTop的值实际是到parentView的距离 这里我漏掉了顶部状态栏的大小 在不同手机上测试 效果始终不理想。

首先是获取状态类高度

Rect frame = new Rect();
getWindow().getDecorView().getWindowVisibleDisplayFrame(frame);
return frame.top;

 这个方法在oncreate中只会返回0 因为这时候实际上还没有开始页面的绘画 所以我放在了点击监听器中。

如此在监听器中弹出popupwindow就可以比较精确的定位了

 

 第二个算是小问题

  怎么在popupwindow弹出的情况下 点击外部区域自动关闭 以为很复杂 结果就是3行代码

popWin = new PopupWindow(popview, dm.widthPixels, 106);//没有设置为focusable
popWin.setBackgroundDrawable(new BitmapDrawable());//不明
popWin.setOutsideTouchable(true);

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值