Używam działania z ustawionym motywem okna dialogowego i chcę, aby było ono wyświetlane na pełnym ekranie. Próbowałem różnych rzeczy, nawet przechodząc przez WindowManager, aby ręcznie rozszerzyć okno do pełnej szerokości i wysokości, ale nic nie działa.
Wygląda na to, że okno dialogowe (lub działanie z motywem okna dialogowego) rozszerza się tylko zgodnie z zawartością, ale nawet to nie zawsze działa. Na przykład pokazuję koło paska postępu, które ma szerokość i wysokość ustawioną na FILL_PARENT (tak samo jak jego kontener układu), ale mimo to okno dialogowe zawija się wokół znacznie mniejszego paska postępu zamiast wypełniać ekran.
Musi istnieć sposób na wyświetlenie czegoś małego w oknie dialogowym, ale czy może ono rozwinąć się do pełnego ekranu bez zmiany rozmiaru jego zawartości?
źródło
Odpowiedzi:
Znalazłem rozwiązanie:
W swojej aktywności, która ma
Theme.Dialog
ustawiony styl, wykonaj następujące czynności:Ważne jest, aby dzwonić
Window.setLayout()
po telefoniesetContentView()
, w przeciwnym razie to nie zadziała.źródło
import android.view.ViewGroup.LayoutParams;
Możesz dodać te wartości do swojego stylu android: windowMinWidthMajor i android: windowMinWidthMinor
źródło
Chcę tylko wypełnić tylko 80% ekranu, ponieważ zrobiłem to poniżej
działa tylko wtedy, gdy wstawię linię getwindow (). setLayout ... poniżej setContentView (..)
dzięki @Matthias
źródło
Umieść swój dialog_custom_layout.xml w RelativeLayout zamiast w jakimkolwiek innym układzie.
źródło
Dla dialogu To może być pomocne dla kogoś. Chcę, aby okno dialogowe zajmowało całą szerokość ekranu. dużo szukałem, ale nic nie okazało się przydatne. W końcu to zadziałało:
po dodaniu tego, moje okno dialogowe pojawia się na całej szerokości ekranu.
źródło
Ta odpowiedź to obejście dla tych, którzy używają „Theme.AppCompat.Dialog” lub innych elementów potomnych „Theme.AppCompat.Dialog”, takich jak „Theme.AppCompat.Light.Dialog”, „Theme.AppCompat.DayNight.Dialog” itp. Sam muszę używać okna dialogowego AppCompat, ponieważ używam AppCompatActivity jako rozszerzenia dla wszystkich moich działań. Pojawi się problem, który spowoduje, że okno dialogowe będzie miało wypełnienie ze wszystkich stron (u góry, po prawej, u dołu i po lewej), jeśli użyjemy zaakceptowanej odpowiedzi.
Dodaj ten kod do stylu swojego działania
Jak możesz zauważyć, problem, który generuje wypełnienie naszego okna dialogowego to „android: windowBackground”, więc tutaj ustawiam tło okna na null.
źródło
Ustaw minimalną szerokość w górnym układzie.
Na przykład:
źródło
Odpowiedź Matthiasa jest w większości poprawna, ale nadal nie wypełnia całego ekranu, ponieważ ma małe wypełnienie z każdej strony (wskazane przez @Holmes). Oprócz jego kodu mogliśmy to naprawić, rozszerzając styl Theme.Dialog i dodając kilka takich atrybutów.
Następnie po prostu deklarujemy Aktywność z motywem ustawionym na
MyDialog
:źródło
Byłoby to pomocne dla kogoś takiego jak ja. Utwórz własny styl okna dialogowego:
W
AndroidManifest.xml
motywie zestawu plików dla pożądanej aktywności:To wszystko, nie ma potrzeby programowego wywoływania metod.
źródło
W Twoim pliku manifestu, w którym zdefiniowano naszą działalność
bez paska akcji
źródło