Miałem dokładnie ten sam problem z nową biblioteką AppCompat 22, gdy używałem android.support.v7.app.AlertDialog dla wszystkich moich AlertDialogów, ale dodatkowe warstwy tła miały wpływ tylko na ProgressDialogs.
Wszystkie moje AlertDialogs, gdy stylizowany przy użyciu mojego niestandardowego motywu wyglądały świetnie, ale ProgressDialog miał dziwną nakładkę w tle, jak opisano w OP.
Moją opcją było ustawienie konkretnego stylu za każdym razem, gdy tworzyłem ProgressBar, ale szukałem szerokiego rozwiązania dla aplikacji.
Z pomocą tych dwóch linków:
How to Style AlertDialogs like a Pro i Joerg Richter Blog udało mi się pozbyć dodatkowej warstwy rysowane na < 21 ProgressDialogs.
Problemem, który znalazłem było to, że we wszystkich wersjach ProgressBar rysuje swoje tło w oparciu o to, co jest zdefiniowane domyślnie w "android: alertDialogStyle".
Aby pozbyć się dodatkowej warstwy, musiałem zdefiniować własne style i ustawić je dla "android: alertDialogStyle". W ten sposób zastępuję również domyślne układy zastosowane do ProgressDialogs.
Oto moje motywy.xml:
<item name="android:alertDialogTheme">@style/MyAlertDialogTheme</item>
<item name="alertDialogTheme">@style/MyAlertDialogTheme</item>
<item name="android:alertDialogStyle">@style/MyAlertDialogStyles</item>
A moja styles.xml:
<style name="MyAlertDialogTheme">
<item name="android:windowIsFloating">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowAnimationStyle">@android:style/Animation.Dialog</item>
<item name="android:windowMinWidthMajor">@android:dimen/dialog_min_width_major</item>
<item name="android:windowMinWidthMinor">@android:dimen/dialog_min_width_minor</item>
<item name="android:background">@color/theme_alert_dialog_background</item>
<item name="colorAccent">@color/theme_accent_1</item>
</style>
<style name="AlertDialog">
<item name="android:fullDark">@android:color/transparent</item>
<item name="android:topDark">@android:color/transparent</item>
<item name="android:centerDark">@android:color/transparent</item>
<item name="android:bottomDark">@android:color/transparent</item>
<item name="android:fullBright">@android:color/transparent</item>
<item name="android:topBright">@android:color/transparent</item>
<item name="android:centerBright">@android:color/transparent</item>
<item name="android:bottomBright">@android:color/transparent</item>
<item name="android:bottomMedium">@android:color/transparent</item>
<item name="android:centerMedium">@android:color/transparent</item>
</style>
dla skórowania powiadomienie dialogi trzeba użyć 'androida: Theme.DeviceDefault.Dialog.Alert' (zawsze) natywny wygląd motywu. W przeciwnym razie tło zostanie zduplikowane. W interfejsie API 21 nie widać różnicy, ale podejrzewam, że nastąpi przeciążenie. Skórki jako okna dialogowe używają motywów 'android: Theme.DeviceDefault.Dialog' (wygląd zewnętrzny) lub' Theme.AppCompat.Dialog' (wygląd materiału). –
'Android: Theme.DeviceDefault.Dialog' jest dostępny tylko w API> 14. Czego używam w API 11? – snowdragon
Dodatkowo powoduje to również przekroczenie granicy na apis typu non-Lollipop. [image] (http://i.imgur.com/y0FEsVz.png) – snowdragon