Диалог с прозрачным фоном в Android

Как удалить черный фон из диалогового окна на Android. На рисунке показана проблема.

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

final Dialog dialog = new Dialog(Screen1.this); dialog.requestWindowFeature(Window.FEATURE_NO_TITLE); dialog.setContentView(R.layout.themechanger); 

Добавить этот код

  dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT)); 
 <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> 

Использовать в java

 Dialog dialog = new Dialog(this, R.style.NewDialog); 

Надеюсь, вам поможет!

Я столкнулся с более простой проблемой, и в решении, которое я придумал, была применена прозрачная тестовая ТЕМА. Напишите эти строки в своих стилях

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

Затем добавьте

 android:theme="@style/Theme.Transparent" 

В вашем основном файле манифеста, внутри блока активности диалога.

Плюс в вашем диалоговом действии XML-набор

  android:background= "#00000000" 

Почему-то решение Zacharias не сработало для меня, поэтому я использовал тему ниже, чтобы решить эту проблему …

 <style name="DialogCustomTheme" parent="android:Theme.Holo.Dialog.NoActionBar"> <item name="android:windowBackground">@color/transparent</item> <item name="android:colorBackgroundCacheHint">@null</item> </style> 

Можно установить эту тему в диалоговом окне, как показано ниже.

 final Dialog dialog = new Dialog(this, R.style.DialogCustomTheme); 

Наслаждаться!!

Вы можете использовать:

 setBackgroundDrawable(null); 

Метод. Далее следует документ:

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

попробуй это:-

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

Одна проблема, которую я нашел со всеми существующими ответами, заключается в том, что поля не сохраняются. Это связано с тем, что все они переопределяют атрибут android:windowBackground , который отвечает за поля, с сплошным цветом. Тем не менее, я сделал некоторые копания в Android SDK и нашел фоновый рисунок фона по умолчанию, и немного изменил его, чтобы разрешить прозрачные диалоги.

Сначала скопируйте /platforms/android-22/data/res/drawable/dialog_background_material.xml в свой проект. Или просто скопируйте эти строки в новый файл:

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

Обратите внимание, что android:color установлен на ?attr/colorBackground . Это сплошная серая / белая по умолчанию, которую вы видите. Чтобы цвет, определенный в android:background в вашем пользовательском стиле, был прозрачным и отображал прозрачность, все, что нам нужно сделать, это изменить ?attr/colorBackground на @android:color/transparent . Теперь это будет выглядеть так:

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

После этого перейдите к теме и добавьте следующее:

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

Обязательно замените newly_created_background_name фактическим именем только что созданного файла, и замените some_transparent_color на необходимый прозрачный фон.

После этого все, что нам нужно сделать, это установить тему. Используйте это при создании AlertDialog.Builder :

  AlertDialog.Builder builder = new AlertDialog.Builder(this, R.style.MyTransparentDialog); 

Затем просто создавайте, создавайте и показывайте диалог как обычно!

Такое же решение, как и zGnep, но используя xml:

 android:background="@null" 

Это то, что я сделал для достижения прозрачности с помощью AlertDialog.

Создал пользовательский стиль:

 <style name="TranslucentDialog" parent="@android:style/Theme.DeviceDefault.Dialog.Alert"> <item name="android:colorBackground">#32FFFFFF</item> </style> 

Затем создайте диалог с помощью:

 AlertDialog.Builder builder = new AlertDialog.Builder(getActivity(), R.style.TranslucentDialog); AlertDialog dialog = builder.create(); 

Используйте этот код, он работает со мной:

  Dialog dialog = new Dialog(getActivity(),android.R.style.Theme_Translucent_NoTitleBar); dialog.show(); 
 Window window = d.getWindow(); window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,WindowManager.LayoutParams.FLAG_BLUR_BEHIND); 

Это мой путь, вы можете попробовать!

Попробуйте это в своем коде:

 getWindow().setBackgroundDrawableResource(android.R.color.transparent); 

Он будет определенно работать … в моем случае …! мой друг

В моем случае решение работает следующим образом:

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

Кроме того, в Xml настраиваемого диалога:

 android:alpha="0.8" 
 dialog.getWindow().setBackgroundDrawable(null); 

Он имеет тот же эффект, что и:

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