Android PopupWindow 如何防止在锚点点击时自动关闭

4
我有一个弹出窗口,当按钮点击时会showAsDropDown,并且这个弹出窗口设置了setOutsideTouchable(true)。我想在点击按钮时切换显示弹出窗口,但是在点击弹出窗口外部时也要取消。问题在于,点击外部触摸事件在按钮点击事件之前被调用,这导致我的弹出窗口在此时隐藏或者显示。 有没有办法解决这个问题? 已修复!!!
我发现问题在于我的弹出窗口没有得到焦点,所以我必须调用:
popupWindow.setFocusable(true);

为了修复它。
1个回答

0

Please check this out.

如果我理解得正确,

// Pop up Window showing

    LayoutInflater layoutInflater = (LayoutInflater) getBaseContext()
            .getSystemService(LAYOUT_INFLATER_SERVICE);
    popupView = layoutInflater.inflate(R.layout.menu_popup, null);
    popupWindow = new PopupWindow(popupView, LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT);
    popupWindow.setOutsideTouchable(true);

 // Add setBackgroundDrawable to the pop up window to close the dialog :

        popupWindow.setBackgroundDrawable(getResources().getDrawable(
            android.R.color.transparent));
    popupWindow.setTouchable(true);

使用以下检查,您可以按照您的要求显示弹出窗口。
findViewById(R.id.topMenu).setOnClickListener(
            new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    // TODO Auto-generated method stub

                        popupWindow
                                .showAsDropDown(findViewById(R.id.topMenu));

            });

我已经检查过了,它运行良好。


1
是的,我的代码很相似,但setOutsideTouchable(true)在onClick中不起作用。每次isShowing()都为false,因为弹出窗口在触发onClick之前就已关闭。 - Rumen Rusanov
你想要做什么?你想在用户点击外部区域时关闭弹出窗口吗? - Rethinavel
是的,我想要在触摸屏幕外部时关闭窗口,但也要有切换锚点。类似于这个,当你点击锚点时关闭和打开窗口,但也可以在触摸屏幕外部时关闭。 - Rumen Rusanov

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接