Как удалить черный фон из диалогового окна в Android. На рисунке показана проблема.
final Dialog dialog = new Dialog(Screen1.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.themechanger);
Как удалить черный фон из диалогового окна в 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));
Или вместо этого:
dialog.getWindow().setBackgroundDrawableResource(android.R.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">@android: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 padding is set to the background's
* padding. However, when a background is removed, this View 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
*/
Всплывающее диалоговое окно заполняет черный цвет фона по умолчанию или цвет темы, поэтому вам нужно установить TRANSPARENT
фон в диалоге. Попробуйте следующий код: -
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"
Попробуйте это в своем коде:
getWindow().setBackgroundDrawableResource(android.R.color.transparent);
он будет определенно работать... в моем случае...! мой frend
Это то, что я сделал для достижения прозрачности с помощью 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.getWindow().setDimAmount(0);
используйте этот код, он работает со мной:
Dialog dialog = new Dialog(getActivity(),android.R.style.Theme_Translucent_NoTitleBar);
dialog.show();
Внимание:
не используйте конструктор для изменения фона
Dialog dialog = new Dialog.Builder(MainActivity.this)
.setView(view)
.create();
dialog.show();dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
изменить на
Dialog dialog = new Dialog(getActivity());
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(view);
dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
mDialog.show();
При использовании Dialog.builder - в нем нет опции getwindow().
Установите эти коды стиля в стиле
<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>
И просто измените ложь на истину ниже линии
<item name="android:backgroundDimEnabled">true</item>
Это затемнит ваш фон.
Window window = d.getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
Это мой путь, вы можете попробовать!
В моем случае решение работает следующим образом:
dialog_AssignTag.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));
И дополнительно в Xml настраиваемого диалога:
android:alpha="0.8"
Если вы расширили класс DialogFrament
, вы можете установить тему с помощью:
setStyle(DialogFragment.STYLE_NORMAL, R.style.customDialogTheme);
А затем создайте собственную тему в своем файле styles.xml (параметры см. В ответе @LongLv)
Не забудьте добавить <item name="android:windowCloseOnTouchOutside">true</item>
если вы хотите, чтобы диалог закрывался, если пользователь прикасается к окну.
Для тех, кто использует настраиваемое диалоговое окно с настраиваемым классом, вам нужно изменить прозрачность в классе, добавив эту строку в onCreate():
getWindow().setBackgroundDrawableResource(android.R.color.transparent);
dialog.getWindow().setBackgroundDrawable(null);
Он имеет тот же эффект, что и:
dialog.getWindow().setBackgroundDrawable(new ColorDrawable(android.graphics.Color.TRANSPARENT));