Як видалити чорний фон із діалогового вікна в 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);
dialog.getWindow().setBackgroundDrawable(new ColorDrawableResource(R.color.transparent));
dialog.getWindow().setBackgroundDrawableResource(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);
Сподіваюся, допоможу вам!
Я зіткнувся з більш простою проблемою, і рішення, яке я придумав, застосував прозору тему bachground ТЕМА. Напишіть ці рядки у своїх стилях
<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"
Якось рішення Захарія не працювало для мене, тому я використав тему нижче, щоб вирішити цю проблему ...
<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'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
*/
Діалогове вікно діалогового вікна заповнення за замовчуванням чорного кольору кольору або теми теми, тому вам потрібно встановити 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();
якщо ви хочете знищити темний фон діалогу, використовуйте це
dialog.getWindow().setDimAmount(0);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Objects.requireNonNull(alertDialog.getWindow()).setDimAmount(0); }
Одне з я знайшов відповіді на всі існуючі відповіді - це те, що поля не збереглися. Це тому, що всі вони перекривають android:windowBackground
атрибут, який відповідає за поля, суцільним кольором. Однак я кілька копав SDK для Android і виявив, що фон вікна за замовчуванням є малювальним, і трохи змінив його, щоб дозволити прозорі діалоги.
Спочатку скопіюйте /platforms/android-22/data/res/dravable/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);
Тоді просто будуйте, створюйте та показуйте діалогове вікно, як зазвичай!
Це те, що я зробив для досягнення прозорості за допомогою 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();
Встановіть ці стильові коди в стилі
<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>
І просто змініть значення false на істинне нижче рядка
<item name="android:backgroundDimEnabled">true</item>
Це зменшить ваш фон.
Увага: Не використовуйте програму для зміни фону.
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);
dialog.show();
Під час використання Dialog.builder це не дає getWindow()
опції.
Window window = d.getWindow();
window.setFlags(WindowManager.LayoutParams.FLAG_BLUR_BEHIND,WindowManager.LayoutParams.FLAG_BLUR_BEHIND);
це мій шлях, можна спробувати!
Якщо ви продовжили DialogFrament
клас, ви можете встановити тему за допомогою:
setStyle(DialogFragment.STYLE_NORMAL, R.style.customDialogTheme);
А потім введіть власну тему у вашому файлі styles.xml (див. Відповідь щодо параметрів @ LongLv)
Не забудьте додати, <item name="android:windowCloseOnTouchOutside">true</item>
якщо ви хочете, щоб діалогове вікно закрилося, якщо користувач торкається його поза межами діалогу.
Для всіх, хто використовує спеціальний діалог із спеціальним класом, вам потрібно змінити прозорість у класі, додавши цей рядок у onCreate ():
getWindow().setBackgroundDrawableResource(android.R.color.transparent);
Переконайтесь, що R.layout.themechanger
немає кольору фону, оскільки за замовчуванням діалогове вікно має колір тла за замовчуванням.
Вам також потрібно додати dialog.getWindow().setBackgroundDrawable(newColorDrawable(Color.TRANSPARENT));
І, нарешті
<style name="TransparentDialog">
<item name="android:windowIsFloating">true</item>
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowContentOverlay">@null</item>
<item name="android:windowTitleStyle">@null</item>
</style>