【问题标题】:how to set a PopupWindow showing on another PopupWindow如何设置在另一个 PopupWindow 上显示的 PopupWindow
【发布时间】:2017-02-13 06:25:45
【问题描述】:

我的应用中有两个 PopupWindows,它们相交。现在我想管理在另一个 PopupWindow 上显示的 PopupWindow,这意味着 Z 轴。有什么想法吗? 您可以看到以下图片。

【问题讨论】:

  • 据我所知,最新的弹出窗口总是会覆盖旧的。 PopupWindow 确实有一个 setElevation 方法。但它是在 API 21 中添加的。
  • 我用过setElevation(),但是没用。
  • 也许您可以在新弹出窗口上调用show() 后尝试在上一个弹出窗口上调用show()
  • 为什么要显示弹出窗口而不是弹出窗口?能具体说明一下场景吗?
  • 如果我在新弹出窗口上调用 show() 之后在上一个弹出窗口上调用 show(),我应该将其关闭然后调用 show(),但我会看到它先关闭然后显示。它是陈旧的。

标签: java android popupwindow


【解决方案1】:

有第一个PopupWindow,在这个PopupWindow上点击TextView,显示第二个PopupWindow。

PopupWindow mPop,mPop2;

    /**
     * show first popupWindow
     */
    private void popupWindow(final View vi) {
        View view = LayoutInflater.from(this).inflate(R.layout.pop, null);
        TextView tv = (TextView) view.findViewById(R.id.tv1);
        //click show second one
        tv.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                popupWindow2(vi);
            }
        });
        if (null == mPop) {
            mPop = new PopupWindow(view);
        }
        mPop.setHeight(294);
        mPop.setWidth(200);
        mPop.setFocusable(true);
        mPop.setOutsideTouchable(true);
        mPop.setBackgroundDrawable(new ColorDrawable(0));
        mPop.showAtLocation(vi, Gravity.CENTER | Gravity.CENTER, 22,
                22);
        mPop.update();

    }

/**
    * show second popupWindow
    */
    private void popupWindow2(View v) {
        View view = LayoutInflater.from(this).inflate(R.layout.pop2, null);
        if (null == mPop2) {
            mPop2 = new PopupWindow(view);
        }
        mPop2.setHeight(294);
        mPop2.setWidth(200);
        mPop2.setFocusable(true);
        mPop2.setOutsideTouchable(true);
        mPop2.setBackgroundDrawable(new ColorDrawable(0));
        mPop2.showAtLocation(v, Gravity.CENTER | Gravity.CENTER, 42,
                42);
        mPop2.update();

    }

并解决这个问题。试试吧。

【讨论】:

  • 谢谢你的回答,这是弹出窗口的正常顺序,但是如果我想让第一个超过第二个,我应该记得第一个的 show() 吗?我不想这样做,我只想知道是否有任何想法来处理一个弹出窗口显示而不是另一个。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-29
  • 2015-01-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多