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

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

当前回答

在我的例子中,没有什么可以应用透明背景。

只有我在我的对话onStart()中使用:

dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))

但这并没有起任何作用。我检查了styles.xml,没有任何与我的问题相关的内容。

最后,当我检查如何创建对话框时,我发现每当我请求对话框片段时,导航组件都会创建对话框。

在XML的navgraph.xml中,我将对话片段定义为片段,因此,它被创建为片段而不是对话框。将这个片段转换成对话框,一切就都到位了。

BTW:你不能在导航编辑器的GUI中从片段修改到对话框。你应该在代码中手工修改。

这可能是对话框的某些效果在运行时没有反映出来的原因之一。

其他回答

按样式设置这些样式代码

<style name="Theme.Transparent" parent="android:Theme">
    <item name="android:windowIsTranslucent">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowIsFloating">true</item>
    <item name="android:backgroundDimEnabled">false</item>
</style>

然后在下面简单地将false更改为true

<item name="android:backgroundDimEnabled">true</item>

它会使你的背景变暗。

如果你使用Kotlin,这段代码可以帮助你:

Objects.requireNonNull(dialog.window)
                ?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))

确保r.b ayout.themechanger没有背景色,因为默认情况下对话框有默认背景色。

你还需要添加dialog.getWindow().setBackgroundDrawable(newColorDrawable(Color.TRANSPARENT));

最后

<style name="TransparentDialog">
    <item name="android:windowIsFloating">true</item>
    <item name="android:windowNoTitle">true</item>
    <item name="android:windowBackground">@android:color/transparent</item>
    <item name="android:windowContentOverlay">@null</item>
    <item name="android:windowTitleStyle">@null</item>
</style>

如果你扩展了DialogFrament类,你可以设置主题:

setStyle(DialogFragment.STYLE_NORMAL, R.style.customDialogTheme);

然后在styles.xml文件中创建自定义主题(参见@LongLv的参数回答)

不要忘记添加<item name="android:windowCloseOnTouchOutside">true</item>如果你想让用户在对话框外触摸时关闭对话框。

使用这段代码,它是为我工作:

Dialog dialog = new Dialog(getActivity(),android.R.style.Theme_Translucent_NoTitleBar);
dialog.show();