AlertDialog弹出消息后,背景色透明,不影响Activity的事件触发

本文详细介绍了如何在Android应用中创建一个具有透明背景且不抢占Activity焦点的Dialog。通过使用AlertDialog.Builder并设置特定的样式和属性,如FLAG_NOT_TOUCH_MODAL和setDimAmount(0f),可以实现这一效果。

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

背景色透明:
//        背景色
        dialog.getWindow().setDimAmount(0f);
不抢占Activity焦点:
//      dialog不去抢占焦点
        dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
LayoutInflater inflater = LayoutInflater.from(HomeActivity.this);
        RelativeLayout layout = (RelativeLayout) inflater.inflate(R.layout.news_layout_9, null);
        final AlertDialog.Builder builder = new AlertDialog.Builder(HomeActivity.this, R.style.dialogNoBg);
        //通过setView设置我们自己的布局
        builder.setView(layout);
        dialog = builder.create();
//        背景色
        dialog.getWindow().setDimAmount(0f);
//        宽高和位置      
        dialog.getWindow().setLayout(DensityUtil.dp2px(350), LinearLayout.LayoutParams.WRAP_CONTENT);
        dialog.getWindow().setGravity(Gravity.TOP);
//      dialog不去抢占焦点
        dialog.getWindow().setFlags(WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL, WindowManager.LayoutParams.FLAG_NOT_TOUCH_MODAL);
//      HomeActivity.this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH, WindowManager.LayoutParams.FLAG_WATCH_OUTSIDE_TOUCH);
        dialog.setCanceledOnTouchOutside(true);
        dialog.show();
//        跳转到消息页面
        layout.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ******************************
                dialog.dismiss();

            }
        });
<style name="dialogNoBg">
        <item name="android:windowFrame">@null</item>
        <item name="android:windowBackground">@android:color/transparent</item>
        <item name="android:windowNoTitle">true</item>
        <item name="android:windowIsFloating">true</item>
        <item name="android:windowContentOverlay">@null</item>
    </style>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值