[英]Keep Android Popup Windows always on top , even though activity goes in background and new activity comes back
这是一个从活动A中显示的弹出窗口。用户在活动A上按下按钮,然后活动B出现在顶部。 但是问题是弹出式菜单也落后于活动B。
我希望弹出窗口始终位于最前面,即使活动落后
LayoutInflater layoutInflater = (LayoutInflater)getSystemService(LAYOUT_INFLATER_SERVICE);
LeadOffPopView = layoutInflater.inflate(
R.layout.leadoffdetect, null);
LeadOffPopWindow = new PopupWindow(
LeadOffPopView, LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
final TextView bLATxtVw = (TextView) (LeadOffPopView)
.findViewById(R.id.LATxtVw);
final TextView bRATextView = (TextView) (LeadOffPopView)
.findViewById(R.id.RATxtVw);
final TextView bLLTextView = (TextView) (LeadOffPopView)
.findViewById(R.id.LLTxtVw);
final TextView bRLTextView = (TextView) (LeadOffPopView)
.findViewById(R.id.RLTxtVw);
final TextView bV1TextView = (TextView) (LeadOffPopView)
.findViewById(R.id.V1TxtVw);
final TextView bV2TextView = (TextView) (LeadOffPopView)
.findViewById(R.id.V2TxtVw);
final TextView bV3TextView = (TextView) (LeadOffPopView)
.findViewById(R.id.V3TxtVw);
final TextView bV4TextView = (TextView) (LeadOffPopView)
.findViewById(R.id.V4TxtVw);
final TextView bV5TextView = (TextView) (LeadOffPopView)
.findViewById(R.id.V5TxtVw);
final TextView bV6TextView = (TextView) (LeadOffPopView)
.findViewById(R.id.V6TxtVw);
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
if (bLAOff) {
bLATxtVw.setVisibility(View.VISIBLE);
} else
bRATextView
.setVisibility(View.INVISIBLE);
if (bRAOff) {
bRATextView
.setVisibility(View.VISIBLE);
} else
bRATextView
.setVisibility(View.INVISIBLE);
if (bLLOff) {
bLLTextView
.setVisibility(View.VISIBLE);
} else
bLLTextView
.setVisibility(View.INVISIBLE);
if (bRLOff) {
bRLTextView
.setVisibility(View.VISIBLE);
} else
bRLTextView
.setVisibility(View.INVISIBLE);
if (bV1Off) {
if(!MainClass.bLANDSCAPEENABLED)
bV1TextView
.setVisibility(View.VISIBLE);
} else
bV1TextView
.setVisibility(View.INVISIBLE);
if (bV2Off) {
if(!MainClass.bLANDSCAPEENABLED)
bV2TextView
.setVisibility(View.VISIBLE);
} else
bV2TextView
.setVisibility(View.INVISIBLE);
if (bV3Off) {
if(!MainClass.bLANDSCAPEENABLED)
bV3TextView
.setVisibility(View.VISIBLE);
} else
bV3TextView
.setVisibility(View.INVISIBLE);
if (bV4Off) {
if(!MainClass.bLANDSCAPEENABLED)
bV4TextView
.setVisibility(View.VISIBLE);
} else
bV4TextView
.setVisibility(View.INVISIBLE);
if (bV5Off) {
if(!MainClass.bLANDSCAPEENABLED)
bV5TextView
.setVisibility(View.VISIBLE);
} else
bV5TextView
.setVisibility(View.INVISIBLE);
if (bV6Off) {
if(!MainClass.bLANDSCAPEENABLED)
bV6TextView
.setVisibility(View.VISIBLE);
} else
bV6TextView
.setVisibility(View.INVISIBLE);
handler.postDelayed(this, 500);
}
}, 250);
LeadOffPopWindow.showAtLocation(
LeadOffPopView,
Gravity.CENTER_HORIZONTAL | Gravity.TOP,20 ,
300);
PopUpWindow / Dialog随您的Activity WindowManager上下文关联,因此只要您的活动在后台运行,PopUpWindow / Dialog也会隐藏。
因此,请使用系统警报PopupWindow / Dialog实现此目的,您可以使用以下代码创建系统对话框:
AlertDialog newDialog = new AlertDialog.Builder(context)
.setMessage(text)
.setPositiveButton(R.string.ok, null)
.setCancelable(true)
.create();
newDialog.getWindow().setType(
WindowManager.LayoutParams.TYPE_SYSTEM_DIALOG);
newDialog.getWindow().addFlags(
WindowManager.LayoutParams.FLAG_DIM_BEHIND);
newDialog.show();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.