Jak usunąć czarne tło z okna dialogowego w systemie Android. Zdjęcie pokazuje problem.
final Dialog dialog = new Dialog(Screen1.this);
dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
dialog.setContentView(R.layout.themechanger);
android
android-dialog
Programista
źródło
źródło
Odpowiedzi:
Dodaj ten kod
Lub ten zamiast tego:
źródło
dialog.getWindow().setBackgroundDrawable(new ColorDrawableResource(R.color.transparent));
dialog.getWindow().setBackgroundDrawableResource(R.color.transparent);
używać w java
Mam nadzieję, że ci pomogę!
źródło
Stawiłem czoła prostszemu problemowi, a rozwiązaniem, które wymyśliłem, było zastosowanie przezroczystego bachground TEMAT. Napisz te linie w swoich stylach
A następnie dodaj
w głównym pliku manifestu, wewnątrz bloku działania okna dialogowego.
Plus w twoim zestawie dialogowym aktywności XML
źródło
Jakoś rozwiązanie Zacharias nie działało dla mnie, więc skorzystałem z poniższego motywu, aby rozwiązać ten problem ...
Można ustawić ten motyw w oknie dialogowym, jak poniżej
Cieszyć się!!
źródło
Możesz użyć:
Metoda. A dokument to:
źródło
Wyskakujące okno dialogowe wypełnia domyślny czarny kolor tła lub kolor motywu, więc musisz ustawić
TRANSPARENT
tło w oknie dialogowym. Wypróbuj poniższy kod: -źródło
jeśli chcesz zniszczyć ciemne tło okna dialogowego, użyj tego
źródło
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) { Objects.requireNonNull(alertDialog.getWindow()).setDimAmount(0); }
Jednym ze znalezionych przeze mnie problemów jest to, że marginesy nie są zachowane. Dzieje się tak, ponieważ wszystkie nadpisują
android:windowBackground
atrybut odpowiadający za marginesy jednolitym kolorem. Jednak zrobiłem trochę kopania w zestawie SDK systemu Android i znalazłem domyślne tło okna do rysowania i zmodyfikowałem go nieco, aby umożliwić przezroczyste okna dialogowe.Najpierw skopiuj /platforms/android-22/data/res/drawable/dialog_background_material.xml do swojego projektu. Lub po prostu skopiuj te linie do nowego pliku:
Zauważ, że
android:color
jest ustawione na?attr/colorBackground
. Jest to domyślny jednolity szary / biały, który widzisz. Aby umożliwić kolor określony wandroid:background
w stylu niestandardowego być przejrzyste i pokazać przejrzystości, wszystko co musisz zrobić, to zmiana?attr/colorBackground
do@android:color/transparent
. Teraz będzie wyglądać następująco:Następnie przejdź do motywu i dodaj to:
Pamiętaj, aby zastąpić
newly_created_background_name
rzeczywistą nazwą właśnie utworzonego pliku do rysowania i zastąpićsome_transparent_color
pożądanym przezroczystym tłem.Po tym wszystkim, co musimy zrobić, to ustawić motyw. Użyj tego podczas tworzenia
AlertDialog.Builder
:Następnie po prostu zbuduj, utwórz i pokaż okno dialogowe jak zwykle!
źródło
To samo rozwiązanie co zGnep, ale przy użyciu xml:
źródło
Wypróbuj to w swoim kodzie:
na pewno zadziała ... w moim przypadku ...! mój przyjaciel
źródło
Właśnie to zrobiłem, aby osiągnąć przejrzystość dzięki AlertDialog.
Utworzono styl niestandardowy:
A następnie utwórz okno dialogowe za pomocą:
źródło
W moim przypadku rozwiązanie działa w następujący sposób:
A dodatkowo w Xml niestandardowego okna dialogowego:
źródło
użyj tego kodu, to działa ze mną:
źródło
Ustaw kod stylu w dobrym stylu
I po prostu zmień wartość false na true poniżej linii
Przyciemni twoje tło.
źródło
Uwaga: Nie używaj konstruktora do zmiany tła.
zmień na
Podczas korzystania z Dialog.builder nie daje
getWindow()
w tym opcji.źródło
to moja droga, możesz spróbować!
źródło
W przypadku przedłużenia
DialogFrament
zajęć możesz ustawić motyw za pomocą:A następnie utwórz niestandardowy motyw w pliku styles.xml (parametry @ w odpowiedzi na @ LongLv)
Nie zapomnij dodać,
<item name="android:windowCloseOnTouchOutside">true</item>
jeśli chcesz zamknąć okno dialogowe, jeśli użytkownik dotknie poza tym oknem.źródło
Dla każdego, kto używa niestandardowego okna dialogowego z niestandardową klasą, musisz zmienić przezroczystość w klasie, dodaj ten wiersz w onCreate ():
źródło
dialog.getWindow (). setBackgroundDrawable (nowy ColorDrawable (ContextCompat.getColor (ctx, android.R.color.transparent)));
źródło
Upewnij się, że
R.layout.themechanger
nie ma koloru tła, ponieważ domyślnie okno dialogowe ma domyślny kolor tła.Musisz także dodać
dialog.getWindow().setBackgroundDrawable(newColorDrawable(Color.TRANSPARENT));
I w końcu
źródło