有啥办法可以去除 AlertDialog 的背景?

Posted

技术标签:

【中文标题】有啥办法可以去除 AlertDialog 的背景?【英文标题】:Is there any way to remove the background of an AlertDialog?有什么办法可以去除 AlertDialog 的背景? 【发布时间】:2018-12-06 03:03:40 【问题描述】:

我正在尝试更改 android AlertDialog 的背景颜色。

我看到的每一篇文章都是关于改变 AlertDialog 的颜色,而不是改变背后的背景。

任何帮助将不胜感激。

【问题讨论】:

【参考方案1】:
<style name="MyDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="android:background">@color/myColor</item>

然后在 Builder 构造函数中应用它:

AlertDialog alertDialog = new AlertDialog.Builder(getContext(), R.style.MyDialogTheme)
    ...
    .create();

更多信息见see this post

【讨论】:

【参考方案2】:

你可以减少暗淡的数量

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

要获得背景颜色,您需要制作一个自定义警报对话框。

【讨论】:

【参考方案3】:

有一种方法可以满足您的要求,但这并不是一个好的解决方案

首先,像这样设置自定义对话框主题。

styles.xml

    <style name="CustomDialogTheme" parent="android:Theme.Dialog">
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">false</item>
    <item name="android:windowBackground">@android:color/transparent</item>
</style>

CustomDialog.java

如下应用主题并构建您的 custom_dialog 视图。

 public HTCustomDialog(Context context) 
    super(context, R.style.CustomDialogTheme);
    setContentView(R.layout.custom_dialog);

custom_dialog.xml

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_
    android:layout_
    android:background="@color/main_solid_80">

    <RelativeLayout
        android:id="@+id/dialog_root"
        android:layout_
        android:layout_
        android:layout_centerInParent="true"
        android:layout_marginLeft="50dp"
        android:layout_marginRight="50dp"
        android:background="@drawable/bg_popup"
        android:padding="16dp">

</RelativeLayout>

现在 CustomDialog 视图是全屏视图,请将根布局的背景设置为您喜欢的任何颜色。

我从here得到了这个答案,看看吧。

【讨论】:

以上是关于有啥办法可以去除 AlertDialog 的背景?的主要内容,如果未能解决你的问题,请参考以下文章

有啥办法能快速清除Centos6中的无用软件包

有啥办法可以将渐变背景转换为“左边框”?

背景位置在 iphone 设备中不起作用。有啥办法可以解决这个问题吗?

AlertDialog 的轻主题?

android alertDialog如何改变其样式,就是可以修改其背景,让背景为其他的颜色或背景图

css 图片自身的背景色如何去除