繁体   English   中英

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

[英]popup window outside click set to false [setOutsideTouchable(false)] does not work

//创建layoutinflator试试{

        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监听popupwindow中的按钮

                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();
    }
    }

外部点击弹出窗口不起作用pw.setOutsideTouchable(false); 在弹出窗口外单击时,它会执行弹出窗口后面的操作,即父窗口。 在此输入图像描述

尝试这个:

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

当窗口可触摸的true ,可聚焦的是falsesetOutsideTouchable()的作品。

如果setOutsideTouchable(true) ,则弹出窗口外的触摸将被忽略,否则popupwindows的外部仍然可以被触摸而不会被忽略。

要关闭弹出窗口,只需添加以下代码行

  popupWindow.setBackgroundDrawable(new ColorDrawable());

它对我有用,我相信这就是你想要的。

请尝试以下代码。 它为我工作

popUp.setOutsideTouchable(false);
popUp.setFocusable(true);
popUp.showAtLocation(this.layout, Gravity.CENTER, 0, 0);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM