Java 如何设置一个弹出窗口在另一个弹出窗口上显示
我的应用程序中有两个弹出窗口,它们相交。现在我想管理另一个弹出窗口上显示的弹出窗口,它表示Z轴。有什么想法吗? 你可以看到下面的图片 及Java 如何设置一个弹出窗口在另一个弹出窗口上显示,java,android,popupwindow,Java,Android,Popupwindow,我的应用程序中有两个弹出窗口,它们相交。现在我想管理另一个弹出窗口上显示的弹出窗口,它表示Z轴。有什么想法吗? 你可以看到下面的图片 及 有第一个弹出窗口,单击此弹出窗口上的文本视图,然后显示第二个弹出窗口 PopupWindow mPop,mPop2; /** * show first popupWindow */ private void popupWindow(final View vi) { View view = LayoutIn
有第一个弹出窗口,单击此弹出窗口上的文本视图,然后显示第二个弹出窗口
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();
}
然后解决这个问题。试试看。
据我所知,最新的弹出窗口将始终覆盖旧的弹出窗口
PopupWindow
确实有一个setElevation
方法。但它是在API 21中添加的。我使用了setElevation(),但它不起作用。在新弹出窗口上调用show()
后,您可以尝试在上一个弹出窗口上调用show()
。为什么要在弹出窗口上显示弹出窗口?您可以指定场景吗?如果我在新弹出窗口的call show()之后在上一个弹出窗口中调用show(),我应该先关闭它,然后调用show(),但我会看到它先关闭,然后再显示。谢谢你的回答,这是popupwindow的正常顺序,但是如果我想让第一个超过第二个,我应该回忆一下第一个的show()吗?我不想这样做,我只想知道是否有任何想法来处理一个popupwindow节目而不是另一个。