如何从Android中的对话框中删除黑色背景。图片显示了问题。
final Dialog dialog = new Dialog(Screen1.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.themechanger);
答案 0 :(得分:610)
添加此代码
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
修改
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
答案 1 :(得分:75)
<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);
我希望能帮到你!
答案 2 :(得分:27)
我遇到了一个更简单的问题,我想出的解决方案是应用透明的bachground主题。在你的风格中写下这些行
<item name="android:windowBackground">@drawable/blue_searchbuttonpopupbackground</item>
</style>
<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>
然后添加
android:theme="@style/Theme.Transparent"
在主清单文件中,在对话框活动的块内。
在对话框活动XML集中加上
android:background= "#00000000"
答案 3 :(得分:14)
不知何故Zacharias解决方案对我不起作用所以我使用以下主题解决了这个问题......
<style name="DialogCustomTheme" parent="android:Theme.Holo.Dialog.NoActionBar">
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:colorBackgroundCacheHint">@null</item>
</style>
可以将此主题设置为对话框,如下所示
final Dialog dialog = new Dialog(this, R.style.DialogCustomTheme);
享受!!
答案 4 :(得分:11)
您可以使用:
setBackgroundDrawable(null);
方法。以下是doc:
/**
* Set the background to a given Drawable, or remove the background. If the
* background has padding, this View's padding is set to the background's
* padding. However, when a background is removed, this View's padding isn't
* touched. If setting the padding is desired, please use
* {@link #setPadding(int, int, int, int)}.
*
* @param d The Drawable to use as the background, or null to remove the
* background
*/
答案 5 :(得分:11)
对话框弹出填充默认的黑色背景颜色或主题颜色,因此您需要将TRANSPARENT
背景设置为对话框。请尝试以下代码: -
final Dialog dialog = new Dialog(this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
dialog.setContentView(R.layout.splash);
dialog.show();
答案 6 :(得分:7)
我发现所有现有答案的一个问题是保证金不会被保留。这是因为它们都覆盖了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>
确保将newly_created_background_name
替换为您刚刚创建的可绘制文件的实际名称,并将some_transparent_color
替换为所需的透明背景。
之后,我们需要做的就是设置主题。在创建AlertDialog.Builder
:
AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.MyTransparentDialog);
然后像往常一样构建,创建和显示对话框!
答案 7 :(得分:3)
与zGnep相同,但使用xml:
android:background="@null"
答案 8 :(得分:3)
在您的代码中尝试此操作:
getWindow().setBackgroundDrawableResource(android.R.color.transparent);
它肯定会起作用......在我的情况下......!我的朋友
答案 9 :(得分:3)
这就是我用AlertDialog实现半透明的方法。
创建自定义样式:
<style name="TranslucentDialog" parent="@android:style/Theme.DeviceDefault.Dialog.Alert">
<item name="android:colorBackground">#32FFFFFF</item>
</style>
然后使用以下命令创建对话框:
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.TranslucentDialog);
AlertDialog dialog = builder.create();
答案 10 :(得分:1)
使用此代码可以与我合作:
Dialog dialog = new Dialog(getActivity(),android.R.style.Theme_Translucent_NoTitleBar);
dialog.show();
答案 11 :(得分:1)
以样式设置这些样式代码
<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>
它将使您的背景变暗。
答案 12 :(得分:1)
注意:
请勿使用构建器更改背景
Dialog dialog = new Dialog.Builder(MainActivity.this)
.setView(view)
.create();
dialog.show();dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
更改为
Dialog dialog = new Dialog(getActivity());
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(view);
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
mDialog.show();
使用Dialog.builder时-它没有提供getwindow()选项。
答案 13 :(得分:0)
如果您扩展了DialogFrament
类,可以使用以下命令设置主题:
setStyle(DialogFragment.STYLE_NORMAL, R.style.customDialogTheme);
然后在styles.xml文件中创建自定义主题(参见@LongLv&#39的参数答案)
如果您希望在用户触摸对话框之外关闭对话框,请不要忘记添加<item name="android:windowCloseOnTouchOutside">true</item>
。
答案 14 :(得分:0)
在我的案例中,解决方案的工作原理如下:
dialog_AssignTag.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
另外 在Xml的自定义对话框中:
android:alpha="0.8"
答案 15 :(得分:0)
对于使用带有自定义类的自定义对话框的任何人,您都需要更改类的透明度,请在onCreate()中添加以下行:
getWindow().setBackgroundDrawableResource(android.R.color.transparent);
答案 16 :(得分:0)
Window window = d.getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
这是我的方式,你可以尝试!
答案 17 :(得分:0)
如果您想破坏对话框的深色背景,请使用
dialog.getWindow().setDimAmount(0);
答案 18 :(得分:0)
dialog.getWindow()。setBackgroundDrawable(new ColorDrawable(ContextCompat.getColor(ctx,android.R.color.transparent)));
答案 19 :(得分:0)
确保R.layout.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>
答案 20 :(得分:0)
Kotlin创建透明背景对话框的方法:
Dialog(activity!!, R.style.LoadingIndicatorDialogStyle)
.apply {
// requestWindowFeature(Window.FEATURE_NO_TITLE)
setCancelable(true)
setContentView(R.layout.define_your_custom_view_id_here)
//access your custom view buttons/editText like below.z
val createBt = findViewById<TextView>(R.id.clipboard_create_project)
val cancelBt = findViewById<TextView>(R.id.clipboard_cancel_project)
val clipboard_et = findViewById<TextView>(R.id.clipboard_et)
val manualOption =
findViewById<TextView>(R.id.clipboard_manual_add_project_option)
//if you want to perform any operation on the button do like this
createBt.setOnClickListener {
//handle your button click here
val enteredData = clipboard_et.text.toString()
if (enteredData.isEmpty()) {
Utils.toast("Enter project details")
} else {
navigateToAddProject(enteredData, true)
dismiss()
}
}
cancelBt.setOnClickListener {
dismiss()
}
manualOption.setOnClickListener {
navigateToAddProject("", false)
dismiss()
}
show()
}
像这样在style.xml中创建LoadingIndicatorDialogStyle:
<style name="LoadingIndicatorDialogStyle" parent="Theme.AppCompat.Light.Dialog.Alert">
<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:statusBarColor">@color/black_transperant</item>
<item name="android:layout_gravity">center</item>
<item name="android:background">@android:color/transparent</item>
<!--<item name="android:windowAnimationStyle">@style/MaterialDialogSheetAnimation</item>-->
</style>