0

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

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

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

非常感谢。感谢帮助。}

4

1 回答 1

0

声明

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

}

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

您可以在此处找到示例代码

于 2012-09-04T05:23:22.327 回答