如何从Android对话框中删除黑色背景。这张图片显示了问题所在。

final Dialog dialog = new Dialog(Screen1.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.themechanger); 

当前回答

如果你想破坏对话框的黑暗背景,使用这个

dialog.getWindow().setDimAmount(0);

其他回答

我在所有现有答案中发现的一个问题是,边际没有得到保留。这是因为它们都覆盖了android:windowBackground属性,该属性负责空白,使用纯色。然而,我在Android SDK中做了一些研究,发现默认的窗口背景是可绘制的,并对其进行了一些修改,以允许透明对话框。

首先,复制/platforms/android-22/data/res/drawable/dialog_background_material.xml到你的项目中。或者,将这些行复制到一个新文件中:

<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:inset="16dp">
    <shape android:shape="rectangle">
        <corners android:radius="2dp" />
        <solid android:color="?attr/colorBackground" />
    </shape>
</inset>

注意,android:color被设置为?attr/colorBackground。这是你看到的默认纯灰色/白色。为了让在android:background中定义的颜色在你的自定义样式中是透明的并显示透明度,我们所要做的就是改变?attr/colorBackground为@android:color/transparent。现在它看起来是这样的:

<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:inset="16dp">
    <shape android:shape="rectangle">
        <corners android:radius="2dp" />
        <solid android:color="@android:color/transparent" />
    </shape>
</inset>

在那之后,转到你的主题并添加这个:

<style name="MyTransparentDialog" parent="@android:style/Theme.Material.Dialog">
    <item name="android:windowBackground">@drawable/newly_created_background_name</item>
    <item name="android:background">@color/some_transparent_color</item>
</style>

确保用刚刚创建的可绘制文件的实际名称替换新婚created_background_name,并用所需的透明背景替换some_transparent_color。

之后我们要做的就是确定主题。在创建AlertDialog时使用此选项。建造者:

    AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.MyTransparentDialog);

然后像往常一样构建、创建和显示对话框!

您可以使用(可选)

dialog.window?.setBackgroundDrawableResource(android.R.color.transparent)

我建议创建一个扩展函数。类似的 extensions.kt

import android.app.Dialog

fun Dialog.setTransparentBackground() {
    window?.setBackgroundDrawableResource(android.R.color.transparent)
}

并在任何对话中使用它

dialog.setTransparentBackground()

做一些有趣的编程……

TL,博士;你只需要两件事,首先在你的风格做一些像这样的事情:

<item name="android:windowIsTranslucent">true</item>
<item name="android:windowBackground">@android:color/transparent</item>

其次,100%确保上述样式应用到对话框中(可能通过传递给构造函数)。

完整的示例

<style name="NewDialog">
    <item name="android:windowFrame">@null</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowTitleStyle">@null</item>
    <item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
    <item name="android:windowSoftInputMode">stateUnspecified|adjustPan</item>
    <item name="android:backgroundDimEnabled">false</item>
    <item name="android:background">@android:color/transparent</item>
</style>

在Java中使用:

Dialog dialog = new Dialog(this, R.style.NewDialog);

希望对你有所帮助!

ColorDrawable drawable = new ColorDrawable(ContextCompat.getColor(ctx, android.R.color.transparent));
dialog.getWindow().setBackgroundDrawable(drawable);

添加以下代码

 dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));

或者换成这个:

dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);