logo小熊博客
首页 代码速查表 fk标记语言示例 登录
目录
PopupWindow 显示问题

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

上一篇:设置android弹窗
下一篇:签到功能部分代码
请我喝奶茶!
赞赏码
手机扫码访问
手机访问