Android Dialog无法去除遮罩

Android Compose Dialog透明背景与遮罩层处理方案 在Android开发中,Dialog组件是实现用户交互的重要元素,其默认的半透明遮罩层虽然能突出内容,但在特定场景下可能影响用户体验。Jetpack Compose作为现代UI框架,提供了声明式的方式来构建界面,但处理Dialog的透明背景和遮罩层需要深入理解其实现原理。通过分析WindowManager的FLAG_DIM_BEHIND标志和Compose绘制层的交互机制,开发者可以掌握从纯Compose方案到窗口属性修改,再到主题配置终极方案的多层次解决方案。这些技术不仅适用于游戏界面中的浮动窗口实现,也 阅读详情

them样式

<style name="LocaticonDialogStyle" parent="@android:style/Theme.Dialog">
        <!-- 背景颜色 -->
        <item name="android:windowBackground" >@android:color/white</ item>
        <item name="android:windowFrame" >@null</ item>
        <!-- 定义对话框显示的动画 -->
        <item name="android:windowAnimationStyle" >@style/LocationAnimationStyle</ item>
        <!-- 背后的阴影 -->
        <item name="android:backgroundDimEnabled" >false</ item>
        <item name="android:windowIsTranslucent" >true</ item>
        <!-- 去掉标题 -->
        <item name="android:windowNoTitle" >true</ item>
        <!-- 点击外部是否允许取消 -->
        <item name="android:windowCloseOnTouchOutside" >true</ item>
    </style >

但是我现在要用代码实现,尝试了好多方法,activity的界面外的背景都是黑色的。

android:backgroundDimEnabled设置false背景是黑色


后面用代码的方式解决了问题

dialog.getWindow().setDimAmount(0f);

解决方案

private void showDialog(){
        View contentView = View.inflate(this,R.layout.map_postion_item,null);
        CustomTextView tvJxName = (CustomTextView) contentView.findViewById(R.id.tv_jx_name);
        CustomTextView tvBranchAddr = (CustomTextView) contentView.findViewById(R.id.tv_branch_address);
        ImageView iv_call_phone = (ImageView) contentView.findViewById(R.id.iv_call_phone);
        iv_call_phone.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ToastUtil.show(MapDetailsActivity.this,"拨打电话");
            }
        });
        if(mFlag.equals("1")) {
            tvJxName.setText(mJxSchoolDtl.getSName());
            tvBranchAddr.setText(sb != null ? sb.getAddr() : "");
        }else {
            tvJxName.setText(mJxSchoolDtl.getSName());
            tvBranchAddr.setText(mJxSchoolDtl.getAddr());
        }
        mDialog = getCommentDialog(contentView);
        mDialog.getWindow().setDimAmount(0f);//核心代码 解决了无法去除遮罩
        mDialog.show();
    }

    public Dialog getCommentDialog(View dialogview){
        final Dialog dialog = new Dialog(this, R.style.action_sheet);
        dialog.setContentView(dialogview);
        dialog.setCanceledOnTouchOutside(true);
        Window window = dialog.getWindow();
        WindowManager.LayoutParams lp = window.getAttributes();
        //window.setBackgroundDrawable(new ColorDrawable());//去除阴影
        lp.width = getScreenWidth();
        //lp.softInputMode = WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE;
        lp.flags = WindowManager.LayoutParams.FLAG_DIM_BEHIND;// 就是这个属性导致不能获取焦点,默认的是FLAG_NOT_FOCUSABLE,故名思义不能获取输入焦点,
        window.setGravity(Gravity.BOTTOM);
        return dialog;
    }

最后献上解决后效果图


Android自定义Dialog内部透明、外部遮罩效果 本文实例为大家分享了Android自定义Dialog遮罩效果的具体代码,供大家参考,具体内容如下 图例: 代码 1、自定义dialog:引入样式和代码指定样式 package com.gxjl.pe.gxjlpesdk.view; import android.app.Dialog; import android.content.Context; import android.os.Bundle; import android.support.annotation.NonNull; import android.support.annotation.Nullable; import and 立即下载

相关推荐

使用Linux安装yum报错 E: Unable to correct problems, you have held broken packages.

使用Linux安装yum报错 E: Unable to correct problems, you have held broken packages.

weixin_43205954的博客 2462

Android的dialog全屏显示不全

状态栏和导航栏都可能不适配:上下两边都显示下层界面 状态栏不适配:虽然状态栏信息不显示,但是dialog没有覆盖全屏,仍然显示下层界面 目前测试机型有:水滴屏、摄像头挖孔屏 导航栏不适配:导航栏还在,不是全屏状态 适配后 Dialog 全屏适配 2、代码实现 //顺序不能颠倒,否则出现导航栏无法适配问题 hideNavigationBar(); adjustFullScreen(getWindow()); getWindow().setBackgroundDrawa...

陈立的博客 2628

Silvaco二极管、三极管、CMOS的制备

Silvaco二极管和三极管的制备

yytu231的博客 5749

关于Dialog阴影部分的消除问题

在android5.0以后的系统中,自定义的AlertDialog会出现奇怪的阴影,很是难看,查阅网上资料后,有人说为了兼容要用v7包下的alertDialog,笔者试了试,发现还是不可以。 后来看到一大神的介绍,说是加 dialog.getWindow().setBackgroundDrawable(new ColorDrawable()); 这样一行代码就可以。果然,完美搞定5.0以上系

mijiaxiaojiu的博客 2982

7.7 数据分析助手:用AI洞察业务数据价值

摘要:AI数据分析助手构建指南 本文介绍了如何构建AI数据分析助手,帮助企业从业务数据中提取价值。系统包含四大核心模块:自然语言理解模块解析用户查询意图,查询规划模块转换为SQL语句,数据可视化模块生成图表,以及洞察生成模块提供深度分析。文章通过销售数据分析助手案例,展示了从数据库准备到自然语言处理的完整实现流程,包括示例代码和系统架构图。该解决方案可降低数据分析门槛,让业务人员直接参与数据探索,提升决策效率。

yonggeit的博客 4092

制造业信息化的现实困局与未来展望:从基础到数字化的挑战与机遇

随着全球科技的发展和市场竞争的加剧,制造业的转型升级成为企业必须面临的挑战。在信息化和数字化的浪潮下,许多企业试图通过技术创新来提升自身竞争力。然而,现实情况是,绝大部分制造业企业的基本信息化都尚未完成,更遑论复杂的数字化。那么,制造业在信息化进程中面对哪些阻碍?未来又该如何实现从基础信息化到数字化的转型?

Yz2024的博客 2983

Dialog

去除Dialog的蒙色(背景色): Dialog.getWindow().clearFlags( WindowManager.LayoutParams.FLAG_DIM_BEHIND); 如果你使用的是API 版本是 14+,还可以更简单 Dialog.getWindow().setDimAmount(0); ...

a1003434346的博客 239

【深度学习】什么是自回归模型?

自回归模型是一种重要的时间序列模型,通过利用过去的值来预测当前或未来的值。它在统计学、经济学、自然语言处理等领域有广泛的应用。自回归模型的简单性和可解释性使其成为许多应用的首选,但在更复杂的情况下,可能需要结合其他模型如移动平均模型(MA模型)或混合模型(如ARIMA)来更好地捕捉时间序列中的模式。扩散模型(Diffusion Model)和自回归模型(Autoregressive Model)是两种不同的生成模型,各自有独特的特点和应用场景。

q742971636的博客 1670

Dialog背景透明部分不拦截点击事件

需求描述:在Dialog背景透明的情况下,允许Dialog透明区域下的Window获取点击事件。(可能需求有点特殊吧,需要2个Dialog来处理) 简单吐槽一下,这个功能以前做过,太久了就忘记了。最初思路就定在Window的属性上,找了很久没发现怎么去设置。 没想到需要通过WindowManager.LayoutParams,里面有挺多属性可用的。 首先需要设置Dialog透明属性: 1、在Styles.xml中添加 <style name="dialog" parent="@android:st

chuyouyinghe的专栏 4041

近五年体内微/纳米机器人赋能肿瘤精准治疗综述:以 GBM 为重点

摘要 微/纳米机器人在实体瘤治疗领域展现出突破性潜力,通过主动运动能力解决传统纳米药物递送效率低、渗透不足等核心问题。2021-2025年间形成三条技术路线:1) 磁驱、声驱等运动增强递送实现深层渗透;2) 与免疫治疗融合实现原位免疫唤醒;3) 针对胶质母细胞瘤开发跨屏障递送系统。研究重点从单一运动性能转向"运动-分布-疗效"的系统评价,需建立标准化指标评估运动学参数、肿瘤分布均匀性和安全性。未来挑战在于临床转化的可制造性、闭环操控及生物相容性优化,特别是对血脑屏障穿透等复杂场景的系统集

AllenLV的博客 5126

Unity如何实现数字人口型同步

SALSA LipSync v2是一款实时唇音同步系统,无需音素映射即可根据音频自动生成口型动画。系统提供三大核心功能:基于音频波形分析的智能口型同步、EmoteR表情随机化工具以及Eyes眼睛/头部追踪系统。配置流程简单快捷,只需导入模型后通过一键配置完成基础设置,再添加A/E/I/O/U等基本口型混合变形即可实现基础功能。进阶功能支持表情池管理(手动/随机/强调/重复触发)和眼部动作配置(骨骼旋转或混合变形)。系统支持三种输入方式:本地音频文件分析、麦克风实时输入和文本转语音,为数字人角色提供完整的表情

TxNet 760

Android Dialog 去掉遮罩层(全透明)

android.view.WindowManager.LayoutParams 二者存在微量差别,在dialog设置宽、高时应使用android.view.WindowManager.LayoutParams设置。

chengzhenjia的博客 2087

5、基于模型的系统工程(MBSE)全面解析

本文全面解析了基于模型的系统工程(MBSE),介绍了模型在系统工程中的核心地位,以及如何通过视图和符号表示法实现信息的可视化。文章还详细阐述了MBSE的方法构成,包括框架(本体和视图点)和流程集,探讨了MBSE的实施流程、关键要素、应用策略以及未来发展趋势。通过合理应用MBSE,组织可以提高系统开发的效率和质量,降低成本与风险,实现成功部署。

nft7creator的博客 127

安卓两个Dialog出现问题,第一个Dialog被第二个Dialog的遮罩层遮住了,即第一个Dialog没有自己的遮罩层了

介绍 UI画的图有个弹窗做筛选,筛选弹窗里面有个选择时间的功能。安卓选择时间,我采用底部弹出Dialog的方式。理想很美好,按照我的想法,确实两个Dialog都能做出来了,样子还不错。但是却遇到了:点击第一个Dialog的按钮弹出第二个Dialog时间选择弹窗,第一个Dialog就没有自己的遮罩层了,成为了一个平面的背景板。 题目描述的问题,如图所示: 我的第一个Dialog: 思路 首先我想的是,是不是第二个Dialog的背景遮罩层太浅了,我把它调黑点 mDialog.

坐等夕阳落time的博客 4299

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

【Compose】隐藏Dialog 组件遮罩层

ok,了解各个属性的含义以后,发现并没有直接控制遮罩层的属性存在。但是usePlatformDefaultWidth属性可以控制是否使用系统平台默认的弹窗宽度,那么我们是不是就可以通过自定义一个占满全屏,但是背景透明的内置组件来实现需求呢?然后发现是Material3主题的问题(Material3主题自带的涟漪-水波纹效果应该也可以通过下面这种方法解决):在项目的XML文件中找到主题配置文件的位置,然后修改该文件。属性很简单,明显properties是关键的配置,所以我们来看一下它的属性。

bald_tang的博客 619

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

dialog实现遮罩层的做法

dialog实现遮罩层的做法 1. 第一点,需要在activity布局中添加一个LinearLayout  布局 例如              android:id="@+id/ll_dialog_background"        android:layout_width="match_parent"        android:layout_height="match_

qq_19694217的博客 2643

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Android Dialog去掉默认的黑色背景效果

正常的Dialog弹窗出现时,背景都会有一层黑色半透明的遮罩,去掉的方法有两种。 方法一: dialog.getWindow().setDimAmount(0f); 方法二: 1:在res/values/styles.xml中自定义dialog的style <style name="MyDialogStyle" parent="Base.Theme.AppCompat.Light.Dialog"> <item name="android:windowAnima

Y哥的博客 4239

android dialog外半透明,Android自定义Dialog内部透明、外部遮罩效果

本文实例为大家分享了Android自定义Dialog遮罩效果的具体代码,供大家参考,具体内容如下图例:代码1、自定义dialog:引入样式和代码指定样式package com.gxjl.pe.gxjlpesdk.view;import android.app.Dialog;import android.content.Context;import android.os.Bundle;import ...

weixin_39551366的博客 505

android 自定义透明 等待 dialog,Android自定义Dialog内部透明、外部遮罩效果

本文实例为大家分享了android自定义dialog遮罩效果的具体代码,供大家参考,具体内容如下图例:代码1、自定义dialog:引入样式和代码指定样式package com.gxjl.pe.gxjlpesdk.view;import android.app.dialog;import android.content.context;import android.os.bundle;import ...

weixin_42501785的博客 267

Activity遮罩效果的实现

android 中遮罩效果有多种实现方法: 1、framelayout中添加一层,覆盖在所有层上 <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/layout" android:layout_width="fill_

wuyou1336的博客 7702

android dialog 点击遮罩 关闭_如何用构建者模式打造自己dialog

前言 dialog弹窗是Android中一个常用的控件,Android本身提供dialog又不满足我们的需求dialog的种类dialogFragmentDialogBottomSheetDialogFragmentBottomSheetDialog本片文章是用构建模式打造一个快捷dialog的使用构建思路控件初始化构造数据初始化构造控件初始化构造 这一部分是不会变化的,我门采用构建者模式...

weixin_33631836的博客 482

Android Dialog去除蒙层/遮盖效果

UI新出了一个页面加载效果 如下图:用ProgressDialog实现完 效果如下:这乌漆墨黑的什么鬼? 怎么办,Dialog默认有蒙层的,难道用Popupwindow再来一次?多方查证,终于找到解决方案,这里感谢:http://blog.youkuaiyun.com/daividtu/article/details/52875129只需在代码中加一行设置:progressDialog.getWindow().

HeDongDong的博客 1万+

Android dialog设置activity背景是否变暗、设置dialog自身白色背景透明(style和java两种方式)

通过style设置 <style name="DialogTransBgLight" parent="@style/Base.V7.Theme.AppCompat.Light.Dialog"> <!--activity不变暗--> <item name="android:backgroundDimEnabled">false</item> <!--dialog自身的底板-->

张雨的博客 5112
上一篇: Retrofit2 完全解析 探索与okhttp之间的关系
下一篇: Adnroid 百度地图多标注 显示在一个页面的问题
涂文远
博客等级 码龄11年 39粉丝 167原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值