PopupWindow 显示问题
可能在显示时触发系统UI的重新显示,因此你需要手动隐藏系统UI。可以在弹窗显示后,通过设置 systemUiVisibility 来保持全屏状态
private void showGameCoinDialog() { // 获取LayoutInflater实例 LayoutInflater inflater = (LayoutInflater) getSystemService(LAYOUT_INFLATER_SERVICE); // 使用LayoutInflater加载弹窗布局 View popupView = inflater.inflate(R.layout.game_coin, null); // 获取屏幕密度 float density = getResources().getDisplayMetrics().density; // 设置宽度和高度为300dp int widthInPx = Math.round(500 * density); // 300 dp 转换为像素 int heightInPx = Math.round(300 * density); // 300 dp 转换为像素 // 创建PopupWindow实例并设置全屏 final PopupWindow popupWindow = new PopupWindow(popupView, ViewGroup.LayoutParams.MATCH_PARENT, // 宽度 (全屏) ViewGroup.LayoutParams.MATCH_PARENT, // 高度 (全屏) true); // 设置弹窗可聚焦 // 创建PopupWindow实例并设置宽度和高度 final PopupWindow popupWindow = new PopupWindow(popupView, widthInPx, // 宽度 (像素) heightInPx, // 高度 (像素) true); // 设置弹窗可聚焦 popupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() { @Override public void onDismiss() { // 在弹窗消失后重新设置全屏模式 hideSystemUI(); } }); // 显示弹窗后,隐藏系统UI popupWindow.setFocusable(true); popupWindow.update(); // 设置点击外部区域关闭弹窗 popupWindow.setOutsideTouchable(true); // 显示弹窗 View parentView = findViewById(android.R.id.content); // 替换为你需要的父视图 popupWindow.showAtLocation(parentView, Gravity.CENTER, 0, 0); hideSystemUI(); TextView closeButton = popupView.findViewById(R.id.back); closeButton.setOnClickListener(v -> popupWindow.dismiss()); } //弹窗隐藏状态栏 private void hideSystemUI() { View decorView = getWindow().getDecorView(); int uiOptions = View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY | View.SYSTEM_UI_FLAG_FULLSCREEN | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION | View.SYSTEM_UI_FLAG_LAYOUT_STABLE; decorView.setSystemUiVisibility(uiOptions); }