Android PopupWindow 点击消失解决办法

1、点击PopupWindow 外部区域时,PopupWindow消失

1
2
3
4
5
6
7
8
9
popMenu = new PopupWindow(getApplicationContext());
        popMenu.setWidth(LayoutParams.MATCH_PARENT);
 
        popMenu.setHeight(LayoutParams.MATCH_PARENT);
 
        popMenu.setBackgroundDrawable(new BitmapDrawable());
 
        popMenu.setFocusable(true);
        popMenu.setOutsideTouchable(true);

这里使用了 setOutsideTouchable 属性,具体可以去参考 developer文档。

使用PopupWindow注意事项:必须设置PopupWindow的backgroundDrawable,否则会出现各种意想不到的bug。

2、点击PopupWindow 自身时(非按钮控件时),PopupWindow消失

解决办法:给 PopupWindow的 contentView 注册一个点击事件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
view.setOnClickListener(new OnClickListener() {
             
            @Override
            public void onClick(View v) {
                if(popMenu.isShowing()){
                    dismiss();
                }
            }
        });
 
popMenu.setContentView(view);
 
        popMenu.showAtLocation(v, Gravity.BOTTOM, 0, 0);
        // popMenu.setAnimationStyle(R.style.popwin_anim_style);
 
        popMenu.update();

  

  

posted @   吴超文  阅读(6508)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
阅读排行:
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探
点击右上角即可分享
微信分享提示