解决浮窗中不能显示dialog问题

本文介绍在Android开发中创建浮窗时的注意事项:确保Dialog的上下文为Activity,并且浮窗应设置为应用级优先级。通过具体代码示例展示了如何创建一个位于屏幕中央的大浮窗。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.Dialog的Context上下文对象必须是Activity,如果需要在浮窗中显示Dialog,浮窗中的上下文对象也应该是Activity;

2.浮窗的优先级不能是系统优先级,应该是应用级的优先级

  /**
     * 创建一个大悬浮窗。位置为屏幕正中间。
     *
     * @param context
     *            必须为应用程序的Context.
     */
    public static UninstallFloatWindow createBigWindow(Context context,Handler handler) {
        //得到windowManager实例
        WindowManager windowManager = getWindowManager(context);
        @SuppressWarnings("deprecation")
        int screenWidth = windowManager.getDefaultDisplay().getWidth();
        @SuppressWarnings("deprecation")
        int screenHeight = windowManager.getDefaultDisplay().getHeight();
        if (uninstallFloatWindow == null) {
            uninstallFloatWindow = new UninstallFloatWindow(context, handler);
            if (uninstallFloatWindowParams == null) {
                uninstallFloatWindowParams = new LayoutParams();
                //大悬浮窗的初始位置
                uninstallFloatWindowParams.y = screenHeight-UninstallFloatWindow.viewHeight;
                uninstallFloatWindowParams.x = 0;
                uninstallFloatWindowParams.flags = WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL;
               <span style="color:#FF6666;"> <span style="color:#FF0000;">uninstallFloatWindowParams.type = LayoutParams.LAST_APPLICATION_WINDOW;</span></span>
                uninstallFloatWindowParams.format = PixelFormat.RGBA_8888;
                uninstallFloatWindowParams.width = LayoutParams.MATCH_PARENT;
                uninstallFloatWindowParams.height = LayoutParams.WRAP_CONTENT;
                
            }
            uninstallFloatWindow.setGravity(Gravity.BOTTOM);
            windowManager.addView(uninstallFloatWindow, uninstallFloatWindowParams);
        }
        return uninstallFloatWindow;
    }
代码中红色标记部分就是浮窗的类型,优先级是应用级优先级

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值