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);
}



