【问题标题】:Android PopUpWindow IssueAndroid PopUpWindow 问题
【发布时间】:2012-09-04 05:10:00
【问题描述】:

这是我的问题。我有一个 PopupWindow 将在单击按钮时显示。我添加了setOutsideTouchable(true),所以当用户在 PopupWindow 之外点击时,PopupWindow 将被关闭。

现在的问题是,当我的弹出窗口显示时,我点击了按钮,它所做的就是关闭我的弹出窗口并再次显示它(它实际上应该做的只是关闭弹出窗口)。它关闭了我的弹出窗口,因为单击按钮算作外部 (setOutsideTouchable(true)),然后再次显示它,因为我在 onclick 上的代码告诉了它。

无论如何我可以将我的按钮包含在 PopupWindow 的范围内,以便在单击时不会关闭它?

非常感谢。感谢帮助。 }

【问题讨论】:

    标签: android popupwindow android-menu


    【解决方案1】:

    声明

    private LayoutInflater inflater;
    private PopupWindow pw;
    private View popupView
    

    在 oncreate 方法中

    inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    popupView = inflater.inflate(R.layout.menu_layout, null, false);
    

    按钮的onclick方法

    public void showPopup(View view) {
        pw = new PopupWindow(getApplicationContext());
        pw.setTouchable(true);
        pw.setFocusable(true);
        pw.setOutsideTouchable(true);
        pw.setTouchInterceptor(new OnTouchListener() {
           public boolean onTouch(View v, MotionEvent event) {
               if (event.getAction() == MotionEvent.ACTION_OUTSIDE) {
                    pw.dismiss();
    
                    return true;
                }
    
                return false;
            }
        });
    
        pw.setWidth(WindowManager.LayoutParams.WRAP_CONTENT);
        pw.setHeight(WindowManager.LayoutParams.WRAP_CONTENT);
        pw.setOutsideTouchable(false);
        pw.setContentView(popupView);
        pw.showAsDropDown(view, 0, 0);
    
    }
    

    这是我用来实现相同的代码。

    您可以在这里找到EXAMPLE CODE

    【讨论】:

    • 如果有帮助,您介意接受答案吗?否则,如果问题仍然存在,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    相关资源
    最近更新 更多