简单快速取消AlertDialog的白色背景框,AlertDialog设置圆角背景

问题描述:

产品需求弹出的提示框是圆角,使用shape 设置圆角背景后,弹出的AlertDialog提示框四个角有白色的背景,据分析这个背景是 AlertDialog 父组件的背景色。

解决方法:

将Dialog的背景设置为透明色,代码如下:

java 复制代码
getDialog().getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT)); 

详细将AlertDialog设置圆角背景方法:

1、首先在drawable文件夹下建一个xml文件,如ic_background_radius.xml

java 复制代码
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android">

    <solid android:color="@color/grey_c4c4c4"/>  //填充色
    <corners android:radius="16dp"/>  //圆角大小
</shape>

2、然后在layout文件夹下建一个xml布局文件,如dialog_face_compare_layout.xml 。在布局文件的根布局中设置了background属性为@drawable/ic_background_radius,目的是为了让dialog显示圆角边框。

java 复制代码
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="vertical"
    android:background="@drawable/ic_background_radius"   //设置定义的圆角背景
    android:padding="16dp">


    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="150dp">

        <ImageView
            android:id="@+id/iv_face_compare"
            android:layout_width="150dp"
            android:layout_height="150dp"
            android:layout_centerInParent="true"
            android:scaleType="centerCrop"
            android:src="@drawable/ic_face_comparing2" />

        <ImageView
            android:id="@+id/iv_scan_line"
            android:layout_width="180dp"
            android:layout_height="3dp"
            android:layout_alignParentTop="true"
            android:layout_centerInParent="true"
            android:scaleType="centerCrop"
            android:src="@drawable/ic_line_drawable" />

    </RelativeLayout>

    <TextView
        android:id="@+id/tv_title"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerInParent="true"
        android:gravity="center"
        android:text="请正视前方"
        android:textColor="@color/black"
        android:textSize="16sp"
        android:textStyle="bold" />

</LinearLayout>

3、在MainAcitvity中写弹出AlertDialog的方法,此处用的dialog是引用外部布局的方式,要想去掉四角的白色背景框至关重要的一句是:

tipDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));

java 复制代码
View tipInflate = LayoutInflater.from(mContext).inflate(R.layout.dialog_face_compare_layout, null);  //设置dialog显示的布局
        AlertDialog tipDialog = new AlertDialog.Builder(mContext).setView(tipInflate).create();//创建AlertDialog对象
        tipDialog.getWindow().setBackgroundDrawable(new ColorDrawable(Color.TRANSPARENT));//将AlertDialog父组件的背景设置为透明色
        tipDialog.show();  //显示提示框

修改后效果图:

相关推荐
仙俊红2 分钟前
Java 单例模式:类里面为什么可以有自己类型的字段?
java·开发语言·单例模式
8Qi82 分钟前
LeetCode 32:最长有效括号 —— 栈 + 标记法 题解
java·数据结构·算法·leetcode·职场和发展··括号匹配
潘潘潘6 分钟前
Android JAVA Socket 知识梳理
android
云烟成雨TD6 分钟前
Spring AI Alibaba 1.x 系列【73】两步 RAG
java·人工智能·spring
_Evan_Yao7 分钟前
面向对象实战:用 Java/Python 设计一个简单的“怪物战斗”小游戏
java·开发语言
asdfg12589637 分钟前
一文通俗理解JDBC中的核心概念+案例
java·数据库·oracle·jdbc
布朗克1689 分钟前
26 多线程基础——Thread、Runnable与线程安全
java·安全·多线程
轮子飞了13 分钟前
Spring Ai 集成 DashScope 多模态模型实现身份证信息识别
java·人工智能·spring
lulu121654407819 分钟前
大模型API聚合平台技术架构深度对比:六大平台协议转换、路由调度与安全治理全解析 - 微元算力(weytoken)
java·人工智能·安全·架构·ai编程
可乐ea22 分钟前
【Spring Boot + MyBatis|第4篇】MyBatis 动态 SQL:if、where、foreach 使用详解
java·spring boot·后端·sql·mybatis