弹出窗口外部点击设置为 false [setOutsideTouchable(false)] 不起作用

2023-11-29

//创建布局充气器 尝试 {

        LayoutInflater inflator = LayoutInflater.from(this);

//创建视图

        final View menuview = inflater.inflate(R.layout.menu,
                (ViewGroup) findViewById(R.layout.dictionarylist));

        Button Menu = (Button) findViewById(R.id.Menu);

        Menu.setOnClickListener(new Button.OnClickListener() {
            public void onClick(View v) {

                final PopupWindow pw = new PopupWindow(menuview);//initialize popupwindow

                pw.showAtLocation(v, Gravity.CENTER, 0, 0);
                pw.update(0, 0, 200, 250);
                pw.setOutsideTouchable(false);//set outside touch to false

//弹出窗口内按钮的onclick监听器

                Button b1 = (Button) menuview.findViewById(R.id.btnClose);
                b1.setOnClickListener(new OnClickListener() {

                    // @Override
                    public void onClick(View v) {
                        pw.dismiss();

                    }

                });
                Button b2 = (Button) menuview.findViewById(R.id.btnQuiz);
                b2.setOnClickListener(new OnClickListener() {

                    // @Override
                    public void onClick(View v) {

                    }

                });
                Button b3 = (Button) menuview.findViewById(R.id.btnTopic);
                b3.setOnClickListener(new OnClickListener() {

                    // @Override
                    public void onClick(View v) {

                        InitialTask2 Task1 = new InitialTask2();
                        Task1.execute();

                    }

                });
                Button b4 = (Button) menuview
                        .findViewById(R.id.btnDictionarylist);
                b4.setOnClickListener(new OnClickListener() {

                    // @Override
                    public void onClick(View v) {

                        try{
                        if(getApplication() != null){
                            pw.dismiss();
                        }
                        else{
                        Intent i = new Intent();
                        i.setClass(getBaseContext(), Dictionarylist.class);
                        startActivity(i);
                        }
                        }
                        catch(Exception x){
                            x.getMessage();
                        }

                    }

                });


            }

        });
    } catch (Exception e) {
        e.getMessage();
    }
    }

popup window outside click does not work pw.setOutsideTouchable(false);. When clicking outside the popup window it perform action placed behind the popup window i.e parent window. enter image description here


尝试这个:

pw.setTouchable(true);    
pw.setFocusable(false);    
pw.setOutsideTouchable(false);  

当窗口可触摸时true,可聚焦的是false, setOutsideTouchable() works.

If setOutsideTouchable(true),触摸popupwindows的外部将会dismiss,否则popupwindows的外部仍然可以触摸而不dismiss。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

弹出窗口外部点击设置为 false [setOutsideTouchable(false)] 不起作用 的相关文章

随机推荐

  • pandas 到 csv TypeError: get_handle() 有一个意外的关键字参数“错误”

    我有一张大桌子 我根据日期将其切成许多小桌子 dfs for fecha in fechas dfs fecha df df date fecha set index Hour now I can acess the tables like
  • 如何从 moment.js 获取月份的整数值

    我正在使用 Moment js 将日期添加到我正在制作的选项列表中 以便我可以使用这些日期来显示可用的约会 例如 某人可以从选项列表中选择 2 月 3 日星期五 然后选择可用时间列表将于2月3日出现 我遇到的问题是我正在使用一个在线调度 A
  • 为什么我需要 IoC 容器而不是简单的 DI 代码? [关闭]

    Closed 这个问题是基于意见的 目前不接受答案 Locked 这个问题及其答案是locked因为这个问题是题外话 但却具有历史意义 目前不接受新的答案或互动 我一直在使用依赖注入 DI 一段时间 注入构造函数 属性或方法 我从来没有觉得
  • 如何使用非法名称访问此对象属性?

    我正在使用某人编写的 PHP 类来与 BaseCamp API 进行交互 我正在执行的特定调用是检索待办事项列表中的项目 效果很好 我的问题是 我不知道如何访问todo items返回的对象的属性 这是返回对象的 var dump obje
  • 将变量从 Shell 脚本传递到 Fortran 90 程序

    我被这个小问题困住了 我想知道是否可以将 bash shell 脚本的变量传递给 f90 代码 我很确定之前已经在这里讨论过 但我找不到完全相同的副本 您可以直接将参数作为参数传递给程序 program arg1 arg2 您可以使用子例程
  • 什么是胖接口?

    你好 我在电影行业工作 模拟和应用工作室效果 我可以问一下什么是胖接口吗 我听到网上有人说它是什么 编辑 是的here尼可波拉斯说 我相信非常好的指示 fat interface an interface with more member
  • 如何更改PHP中数组的索引[重复]

    这个问题在这里已经有答案了 我想在执行一些操作后更改数组的索引 我的实际输出是 Array 0 gt Array 0 gt 4 1 gt 6 2 gt Array 0 gt 1 1 gt 7 5 gt Array 0 gt 1 1 gt 7
  • 如何从 Http 集成流程创建 Spring Reactor Flux?

    我有一个与此非常相似的问题如何从 ActiveMQ 队列创建 Spring Reactor Flux 唯一的区别是消息来自 Http 端点而不是 JMS 队列 问题是消息通道由于某种原因没有被填充 或者它没有被 Flux from 拾取 日
  • JavaScript substr();按字限制而不是字符

    我想用单词而不是字符来限制子字符串 我正在考虑正则表达式和空格 但不知道如何实现 场景 使用 javascript jQuery 将一段单词限制为 200 个单词 var postBody postBody substr 200 这很棒 但
  • MongoDB 未授权查询 admin.system.users

    我对 MongoDb 有点陌生 我正在使用 MongoDb v 2 4 这里的问题是 当我使用 auth 参数运行 mongod 时 即使在经过身份验证后 我也无法执行简单的操作 例如 显示用户 但如果我在没有 auth 参数的情况下运行
  • 复选框未显示在下拉列表中

    我必须从下拉列表中进行多项选择 所以我已经提到了这个link 但是 当我尝试在浏览器中打开该程序时 我没有看到该复选框 也无法选择更多数据 我的脚本看起来像这样
  • 如何在liferay DXP中添加语言图标

    如何在liferay 7 liferay ce portal 7 0 ga4 中添加语言图标图像 我已按照以下文章中提到的步骤进行操作 https web liferay com web salman khan blog blogs add
  • Java正则表达式匹配无回车符后跟换行符

    我试过了 r n但这行不通 你怎么做到这一点 我很欣赏 在类似 Java 的代码中 您需要使用 r n 谢谢你 根据您的要求 r n 前面有除回车符之外的任何字符的换行符 这意味着换行之前必须有一个字符 and 两个符号将被匹配
  • ASP.NET Masterpage 中的 Google Maps API:为什么它保持空白?

    当在 Visual Studio localhost port 服务器中启动时 这个简单的示例以纯 html 运行
  • D3:树形图中的超链接

    我在超链接 Reingold Tilford 树图中的子元素时遇到问题 该图是在 D3 中构建的 并且基于 Mike Bostock 使用的示例 http bl ocks org mbostock 4339184 我的代码和 JSON 文件
  • 如何将 ASP.NET 网站转换为 SharePoint 网站?

    假设您有一个包含隐藏代码的 ASP NET 站点 现在 您需要将此网站移动到 SharePoint 环境 在该环境中它将成为其自己的 Web 应用程序中网站集的根网站 在不完全重新设计每个页面的情况下实现这一目标的最简单方法是什么 以下是一
  • api <21 的可绘制着色

    是否可以为 api
  • C# 循环遍历 List> 以填充 DataTable

    我需要循环遍历字典列表 List
  • iPhone 上的自定义相机变焦功能

    我是 XCode 新手 我正在尝试开发具有覆盖视图的自定义相机 我能够很好地加载它并且工作得很好 现在我想添加通过叠加视图上的按钮激活的缩放功能 有人可以指导我吗 我试图找出如何变焦相机 但我还没有找到任何东西 谢谢 您可以使用camera
  • 弹出窗口外部点击设置为 false [setOutsideTouchable(false)] 不起作用

    创建布局充气器 尝试 LayoutInflater inflator LayoutInflater from this 创建视图 final View menuview inflater inflate R layout menu View