当前位置: 首页 > 知识库问答 >
问题:

PopupWindow不会在返回键时关闭

公冶高峯
2023-03-14

在我的布局中,有一个用于搜索的EditText,在EditText下面有一个列表。现在我在弹出窗口中放大这个布局。现在我的问题是

1) 如果我将PopupWindow focusable设置为true,则PopupWindow布局以外的所有位置都将不可单击。因此,我不能通过单击外部或单击设备的后退按钮来关闭窗口

2)如果我设置PopupWindow可聚焦假,那么PopupWindow打开和关闭是完美的,但是软键盘在编辑文本的点击上不可见

LayoutInflater inflater = (LayoutInflater) getActivity().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            // Inflate the view from a predefined XML layout View layout = inflater.inflate(R.layout.popup_layout, null);
mPopUpWindow= new PopupWindow(layout,0, mScreenHeight - 100, false);
mPopUpWindow.setBackgroundDrawable(null);
mPopUpWindow.setOutsideTouchable(true);
mPopUpWindow.setTouchInterceptor(new View.OnTouchListener() {

                @Override
                public boolean onTouch(View v, MotionEvent event) {
                    // TODO Auto-generated method stub
                    if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
                        mPopUpWindow.dismiss();

                    }
                    return false;
                }
            });

final InputMethodManager inputMgr = (InputMethodManager) MainApplication.getContext().getSystemService(
                    Context.INPUT_METHOD_SERVICE);
inputMgr.showSoftInput(mEditText, InputMethodManager.SHOW_IMPLICIT);
mEditText.setOnEditorActionListener(new TextView.OnEditorActionListener() {
                @Override
    public boolean onEditorAction(TextView v, int actionId, KeyEvent event) {
                    if (actionId == EditorInfo.IME_ACTION_SEARCH) {

inputMgr.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(),
                                InputMethodManager.HIDE_NOT_ALWAYS);

                        return true;
                    }
                    return false;
                }
            });

共有2个答案

司徒河
2023-03-14

代码中添加三行:

popupWindow.setOutsideTouchable(true);
popupWindow.setFocusable(true);
popupWindow.setBackgroundDrawable(new BitmapDrawable());
popupWindow.showAsDropDown(ivmainmenu);

而且,popupWindow的表演必须在最后进行。

壤驷德宇
2023-03-14

简单地使用这个

View popupView= getLayoutInflater().inflate(R.layout.popupmenu,null);
                PopupWindow popup = new PopupWindow(popupView, WindowManager.LayoutParams.WRAP_CONTENT, WindowManager.LayoutParams.WRAP_CONTENT,true);
                popup.setBackgroundDrawable(new BitmapDrawable());
                popup.setOutsideTouchable(true);
                popup.showAsDropDown(view);
                popup.update();

要点是,PopUpWindow不能为空。在这里看到这个答案

 类似资料:
  • 我已经搜索了半打其他答案,但没有找到一个有效的答案。我只是想在用户按下回车键时关闭软键盘。(相当于极其简单的iOS“辞职键盘”通话。)在下面的代码中,不会调用onEditorAction方法。我在XML文件中设置了EditText视图,片段中的代码如下: 下面是XML文件中的一个片段,我在其中定义了EditText字段。我需要EditText多行。

  • Python的新类型提示功能允许我们键入函数返回的提示… …或保留未指定的返回类型,PEP规定应导致静态分析器假设任何返回类型都是可能的: 任何没有注释的函数都应被视为具有最通用的类型 但是,我应该如何键入函数永远不会返回的提示?例如,键入 hint 这两个函数的返回值的正确方法是什么? 既没有指定

  • 编辑问题以包括所需的行为、特定问题或错误,以及重现问题所需的最短代码。这将有助于其他人回答这个问题。 代码不返回值,而是返回“?”。编译时我没有遇到任何错误。请协助。 代码需要返回需要支付的剩余金额。输出代码1代码2代码3代码4

  • 问题内容: 我在尝试使用history.pushstate事件时遇到了一些问题。我进行了设置,以使页面的url是通过AJAX加载的页面的实际URL,并且可以正常工作。 我了解它应该自动创建历史记录,以加载先前加载的页面。不幸的是,帽子没有发生,当我单击后退时,URL确实会更改,但页面不会更改。你能帮助我吗?这是我的简化代码: 问题答案: 想通了,我刚刚添加: 到页面末尾

  • 问题内容: 我汇总了一个简单的测试项目,该项目显示了一个包含EditText的PopupWindow(在Android 2.2上)。如我所料,当我点击EditText时,将显示软键盘。但是,软键盘覆盖了EditText,因此无法平移屏幕以使EditText保持应有的状态。我的代码: TestAdjustPanActivity.java: main.xml: popup.xml: …并且我的Andr

  • 问题内容: 我为一个朋友做了一些网络工作,帮助了他。他需要的一部分是在他的站点上更改几段文字的简单方法。与其让他编辑HTML,我决定提供一个带有消息的XML文件,然后我使用jQuery将它们从文件中拉出并插入到页面中。 它的效果非常好…在Firefox和Chrome中,在IE7中效果不佳。我希望你们中的一个能告诉我原因。我做了一个公平的但谷歌搜索,但是找不到我想要的东西。 这是XML: 这是我的j