Android Alert Dialog с дополнительным фоном

Недавно я перенес свое приложение в Material Design, и я наткнулся на эту проблему с помощью своих диалоговых окон Alert:

Диалоговое окно имеет два фона, и я не знаю, как избавиться от внешнего фона

Я применяю стиль диалога следующим образом:

<item name="android:alertDialogTheme">@style/Theme.AlertDialog</item>

И Theme.AlertDialog выглядит так:

 <style name="Theme.AlertDialog" parent="Base.V14.Theme.AppCompat.Dialog"> <item name="colorPrimary">@color/theme_primary</item> <item name="colorPrimaryDark">@color/theme_primary_dark</item> <item name="colorAccent">@color/theme_accent_dark</item> </style> 

Это происходит на моем устройстве Kitkat, и он отлично работает на Lollipop. Можете ли вы помочь мне избавиться от этого внешнего фона?

Дело здесь:

 <style name="Theme.AlertDialog" parent="Base.V14.Theme.AppCompat.Dialog"> ... <item name="colorPrimary">@color/theme_primary</item> <item name="colorPrimaryDark">@color/theme_primary_dark</item> <item name="colorAccent">@color/theme_accent_dark</item> ... <item name="android:windowBackground">@android:color/transparent</item> ... </style> 

Как сказал мне Железный человек , убедитесь, что вы импортируете правильный класс.

Справа: import android.support.v7.app.AlertDialog;

Неверно: import android.app.AlertDialog;

Использовать тему в родительском

 AlertDialog.THEME_DEVICE_DEFAULT_LIGHT 

Добавьте ниже стили. Вы также должны настроить фон.

  <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:backgroundDimEnabled">false</item> <item name="android:background">@android:color/transparent</item> 

Использование ниже также работает

 <item name="android:windowBackground">@android:color/transparent</item> <item name="android:background">@android:color/transparent</item> 

Также вы можете установить в своем коде, используя

 dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 

И это должно быть до setContentView

 dialog.setContentView(R.layout.dialog); 

У меня был тот же самый симптом, но для меня это было фактически тем, что я использовал стандартные рамки AlertDialog (и его Builder) вместо android.support.v7.app.AlertDialog, переключившись на использование одной из библиотеки поддержки, исправил проблему для меня.

Я столкнулся с той же проблемой, но решил это. Подобно этому, если вы хотите белый диалог для нижнего леденца и выше Lollipop, используйте нижний стиль для выше Lollipop и используйте AlertDialog.THEME_DEVICE_DEFAULT_LIGHT для более низкого Lollipop.

См. Этот пример:

 <style name="CustomDialogTheme" parent="Theme.AppCompat.Light.Dialog.Alert"> <item name="android:textColorPrimary">@color/black</item> <item name="android:background">@android:color/white</item> <item name="android:windowBackground">@android:color/transparent</item> </style> 

И код JAVA:

 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { dialogBuilder = new AlertDialog.Builder(this, R.style.CustomDialogTheme).create(); } else { dialogBuilder = new AlertDialog.Builder(this, AlertDialog.THEME_DEVICE_DEFAULT_LIGHT).create(); }