How do I remove the black background from a dialog box in Android. The pic shows the problem.

final Dialog dialog = new Dialog(Screen1.this); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.themechanger); How do I remove the black background from a dialog box in Android. The pic shows the problem.

final Dialog dialog = new Dialog(Screen1.this); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.themechanger); Add this code
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); Or this one instead:
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent); dialog.getWindow().setBackgroundDrawable(new ColorDrawableResource(R.color.transparent));dialog.getWindow().setBackgroundDrawableResource(R.color.transparent);TL;DR; You just need two things, firstly in your style do something like:
<item name="android:windowIsTranslucent">true</item> <item name="android:windowBackground">@android:color/transparent</item> Secondly, make 100% sure said style gets applied to your dialog (maybe by passing to constructor).
<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> Use in Java:
Dialog dialog = new Dialog(this, R.style.NewDialog); I hope helps you !
<item name="android:backgroundDimAmount">0.2</item> or programmatically window.getAttributes().dimAmount = 0.2f;I've faced the simpler problem and the solution i came up with was applying a transparent bachground THEME. Write these lines in your styles
<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> And then add
android:theme="@style/Theme.Transparent" in your main manifest file , inside the block of the dialog activity.
Plus in your dialog activity XML set
android:background= "#00000000" if you want destroy dark background of dialog , use this
dialog.getWindow().setDimAmount(0); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Objects.requireNonNull(alertDialog.getWindow()).setDimAmount(0); }Somehow Zacharias solution didn't work for me so I have used the below theme to resolve this issue...
<style name="DialogCustomTheme" parent="android:Theme.Holo.Dialog.NoActionBar"> <item name="android:windowBackground">@android:color/transparent</item> <item name="android:colorBackgroundCacheHint">@null</item> </style> One can set this theme to dialog as below
final Dialog dialog = new Dialog(this, R.style.DialogCustomTheme); Enjoy!!
Dialog pop up fill default black background color or theme color so you need to set TRANSPARENT background into Dialog. Try below code:-
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(); You can use the:
setBackgroundDrawable(null); method.And following is the 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 */ One issue I found with all the existing answers is that the margins aren't preserved. This is because they all override the android:windowBackground attribute, which is responsible for margins, with a solid color. However, I did some digging in the Android SDK and found the default window background drawable, and modified it a bit to allow transparent dialogs.
First, copy /platforms/android-22/data/res/drawable/dialog_background_material.xml to your project. Or, just copy these lines into a new file:
<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> Notice that android:color is set to ?attr/colorBackground. This is the default solid grey/white you see. To allow the color defined in android:background in your custom style to be transparent and show the transparency, all we have to do is change ?attr/colorBackground to @android:color/transparent. Now it will look like this:
<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> After that, go to your theme and add this:
<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> Make sure to replace newly_created_background_name with the actual name of the drawable file you just created, and replace some_transparent_color with the desired transparent background.
After that all we need to do is set the theme. Use this when creating the AlertDialog.Builder:
AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.MyTransparentDialog); Then just build, create, and show the dialog as usual!
Attention : Don't use builder for changing background.
Dialog dialog = new Dialog.Builder(MainActivity.this) .setView(view) .create(); dialog.show();dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent); change to
Dialog dialog = new Dialog(getActivity()); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(view); dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent); dialog.show(); When using Dialog.builder, it's not giving getWindow() option in it.
This is what I did to achieve translucency with AlertDialog.
Created a custom style:
<style name="TranslucentDialog" parent="@android:style/Theme.DeviceDefault.Dialog.Alert"> <item name="android:colorBackground">#32FFFFFF</item> </style> And then create the dialog with:
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.TranslucentDialog); AlertDialog dialog = builder.create(); Use this code, it's works for me:
Dialog dialog = new Dialog(getActivity(),android.R.style.Theme_Translucent_NoTitleBar); dialog.show(); You can use
dialog.window?.setBackgroundDrawableResource(android.R.color.transparent) If you need to reuse this,
I would recommend creating an extension function. Something like extensions.kt
import android.app.Dialog fun Dialog.setTransparentBackground() { window?.setBackgroundDrawableResource(android.R.color.transparent) } and use it on any dialog by calling
dialog.setTransparentBackground() Have some fun programming...
Set these style code in 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> And simply change false to true below line
<item name="android:backgroundDimEnabled">true</item> It will dim your background.
In case you extended the DialogFrament class, you can set the theme with:
setStyle(DialogFragment.STYLE_NORMAL, R.style.customDialogTheme); And then make the custom theme in your styles.xml file (see @LongLv's answer for parameters)
Don't forget to add <item name="android:windowCloseOnTouchOutside">true</item> if you want the dialog to close if the user touches outside the dialog.
In my case, nothing was working to apply a transparent background.
Only I used in my dialog onStart():
dialog?.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT)) But it was not taking any effect. I checked styles.xml, nothing linked to my problem.
Finally, when I was checking how my dialog is gets created I found that the navigation component was creating the dialog whenever I request the dialog fragment.
There In XML of navgraph.xml, I defined the dialog fragment as a fragment so, It was created as a fragment instead of a dialog. Changing that fragment to dialog made everything fall in place.
BTW: You cannot modify from fragment to dialog in the GUI of the navigation editor. You should change by hand in code.
This might be one of a cause when some effect on a dialog is not reflected in runtime.
Window window = d.getWindow(); window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,WindowManager.LayoutParams.FLAG_BLUR_BEHIND); this is my way, you can try!
Make sure R.layout.themechanger has no background color because by default the dialog has a default background color.
You also need to add dialog.getWindow().setBackgroundDrawable(newColorDrawable(Color.TRANSPARENT));
And finally
<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> Kotlin way to create dialog with transparent background:
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() } Create LoadingIndicatorDialogStyle in style.xml like this:
<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>