Как я могу изменить по умолчанию черный тусклый фон «цвет» (не размер тусклого) диалогового окна?

Введите описание изображения здесь

(Это случайное изображение, показывающее Dialog найденный в Интернете.)

Я выполняю пользовательский Dialog . Я мог бы обрабатывать почти все в диалоге, за исключением того, что по умолчанию черный тусклый фон под самим диалогом, но по всему экрану за ним. В основном я хочу изменить его цвет и альфа-значение.

Я блуждал по StackOverflow, но только ответы, которые я нашел, касались изменения фона самого Dialog . В любом случае, если вам это нужно, вот мои простые коды.

CustomDialog.java

 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); } } 

custom_dialog.xml

 <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> 

Solutions Collecting From Web of "Как я могу изменить по умолчанию черный тусклый фон «цвет» (не размер тусклого) диалогового окна?"

Это обходной путь, но на самом деле это не чистое решение, потому что фоновое прикосновение отключено и должно быть настроено вручную.

Во-первых, установите настраиваемую тему диалога, как это.

styles.xml

 <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> 

Установка windowIsFloating для ложных сил. Dialog представление будет расширено до полноэкранного режима. Настройка windowBackground to transparent удаляет по умолчанию черный тусклый фон в Dialog windowBackground . windowNoTitle избавляется от верхней строки заголовка.

CustomDialog.java

Примените тему и custom_dialog представление custom_dialog следующим образом.

 public HTCustomDialog(Context context) { super(context, R.style.CustomDialogTheme); setContentView(R.layout.custom_dialog); } 

custom_dialog.xml

 <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> 

Теперь, CustomDialog представление CustomDialog представляет собой полноэкранный режим, установите background корневого макета на любой цвет.

Пример результата

Я немного нарисовал результат.

результат

Использование изготовленный под заказ 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: управление черным тусклым фоном

Попробуйте установить стиль для ваших диалоговых окон,

Пример:

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

Попробуйте код,

 View checkBoxView = View.inflate(context, R.layout.alertbox, null); final AlertDialog.Builder builder = new AlertDialog.Builder(context); builder.setView(checkBoxView); builder.setCancelable(false); d = builder.create(); d.getWindow().setBackgroundDrawable(new ColorDrawable(0)); d.setView(checkBoxView, 0, 0, 0, 0); d.show(); 

Nb: строка d.setView (checkBoxView, 0, 0, 0, 0); Сделают это …