关于dialog设置无标题无背景(去掉背后的灰色框)

在项目中,为了美观通常需要自定义Dialog样式。通过创建drawable资源定义Dialog的圆形角背景,并在style中应用。然而,直接在XML中引用style仍会出现灰色边框。解决方法是在自定义Dialog类的构造器中,使用super调用时传入定义的style,避免边框显示。

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

在项目中,我们难免会遇到自定义dialog的情况(与其说难免不如说大部分的时候都需要自定义),然而系统的dialog实在是太难看了,那该怎么办呢?首先我们需要新建一个drawable文件,用来设定展示的dialog的样式,举个简单的例子:

 

<shape xmlns:android="http://schemas.android.com/apk/res/android">
<solid android:color="@color/white"/>
    <corners android:radius="5dp"/>
</shape>

设置一个背景为白色,四角为是圆的的样式,然后将其添加到style文件中去:

 

 

</style>
    <style name="dialog_parent" parent="@android:style/Theme.Dialog">
      <!--  设置背景透明-->
        <item name="android:windowBackground">@color/transparent</item>
        <!--设置是否有边框-->
        <item name="android:windowFrame">@null</item>
        <!--设置是否有标题栏-->
        <item name="android:windowNoTitle">true</item>
       <!-- 设置是否有遮盖-->
        <item name="android:windowContentOverlay">@null</item>
       <!-- 设置是否浮在activity之上-->
        <item name="android:windowIsFloating">true</item>
        <!--添加我们的drawable文件-->
        <item name="android:background">@drawable/dialog_background_parent_moving</item>
    </style>

然后下面是重点!!!重点!!如果你直接继承了dialog,然后再xml文件里引用了这个style,你会发现!dialog的后面还是会有灰色的边框!因为我们设置的圆角,dialog的边框四周会显示出来!最好的方法,不是在布局文件里用,而是

 

 

public RecordDialog(@NonNull Context context, Long teacher_uid) {
    super(context, R.style.dialog_parent);
    this.context = context;
    this.teacher_uid = teacher_uid;
}

在你继承dialog的时候,再super中加入你的style!!!(真的很坑啊!!!!!!!!)

 

 

不喜勿喷,有什么不对的地方欢迎指出来互相学习交流

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值