
(This is a random image of showing a Dialog found on the Internet.)
I've been implementing a custom Dialog. I could handle almost everything on the dialog except for that default black dim background under the dialog itself, but over the entire screen behind it. Basically I want to change its color and alpha value.
I've been wandering through StackOverflow but only answers I found were about changing background of Dialog itself. In any case if you need it, here's my simple codes.
public class HTDialog extends Dialog{ public HTDialog(Context context, boolean cancelable, OnCancelListener cancelListener) { super(context, cancelable, cancelListener); requestWindowFeature(Window.FEATURE_NO_TITLE); setCanceledOnTouchOutside(true); setContentView(R.layout.custom_dialog); } } <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/dialog_root" android:layout_width="match_parent" android:layout_height="match_parent" android:minWidth="280dp" android:background="@drawable/bg_popup" android:paddingTop="20dp"> <ImageView android:id="@+id/dialog_image" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerHorizontal="true" android:src="@drawable/icon" /> </RelativeLayout>
This is a workaround but it's not really a pure solution because background touch is disabled and should be configured manually.
First, set custom dialog theme like this.
<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> Setting windowIsFloating to false forces Dialog view to be expanded to full screen. Setting windowBackground to transparent removes default black dim background under Dialog. windowNoTitle option gets rid of the upper title bar.
Apply the theme and construct your custom_dialog view as follows.
public HTCustomDialog(Context context) { super(context, R.style.CustomDialogTheme); setContentView(R.layout.custom_dialog); } <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/main_solid_80"> <RelativeLayout android:id="@+id/dialog_root" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:layout_marginLeft="50dp" android:layout_marginRight="50dp" android:background="@drawable/bg_popup" android:padding="16dp"> </RelativeLayout> Now that CustomDialog view is a full-screen view, set background of your root layout to whatever color you'd like.
I mosaiced the result a bit.

use custom style.
<style name="transparent_dialog_borderless" parent="android:Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowNoTitle">true</item> <item name="android:background">#FF333333</item> <item name="android:windowBackground">@null</item> <item name="android:backgroundDimEnabled">true</item> </style> android:backgroundDimEnabled:control the black dim background
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With