Mam nazwane działanie, whereActity
które ma również okna dialogowe potomne. Teraz chcę wyświetlić tę aktywność jako okno dialogowe dla innej aktywności.
Jak mogę to zrobić?
Mam nazwane działanie, whereActity
które ma również okna dialogowe potomne. Teraz chcę wyświetlić tę aktywność jako okno dialogowe dla innej aktywności.
Jak mogę to zrobić?
Odpowiedzi:
Aby rozpocząć działanie jako okno dialogowe, zdefiniowałem to w następujący sposób
AndroidManifest.xml
:Użyj tej właściwości w
activity
tagu, aby uniknąć wyświetlania okna dialogowego na liście ostatnio używanych aplikacjiJeśli chcesz zatrzymać niszczenie okna dialogowego / aktywności, gdy użytkownik kliknie poza oknem dialogowym:
Po
setContentView()
wActivity
użyciu:this.setFinishOnTouchOutside(false);
Teraz, kiedy dzwonię
startActivity()
, wyświetla się jako okno dialogowe z poprzednią aktywnością pokazaną, gdy użytkownik naciśnie przycisk Wstecz.Pamiętaj, że jeśli używasz
ActionBarActivity
(lub motywu AppCompat), musisz użyć@style/Theme.AppCompat.Dialog
zamiast tego.źródło
@style/Theme.AppCompat.Dialog
this.setFinishOnTouchOutside(false);
posetContentView()
, aby zapobiec zniszczeniu aktywności po kliknięciu poza utworzonym oknem dialogowym.Użyj tego kodu, aby działanie okna dialogowego nie zostało zamknięte, gdy użytkownik dotknie poza oknem dialogowym:
wymaga poziomu interfejsu API 11
źródło
Możesz zdefiniować ten styl w wartości / styles.xml, aby wykonać wcześniejszy Splash:
I użyj go AndroidManifest.xml:
źródło
@drawable/trans
: powinieneś być w stanie używać,@android:color/transparent
które tworzyłobyColorDrawable
jako tło.<item name="windowNoTitle">true</item>
(bez „Androida”). Zobacz tutaj . Nie jestem pewien co do innych pozycji.1 - Możesz użyć tej samej aktywności, co w oknie dialogowym i na pełnym ekranie, dynamicznie:
Zadzwoń
setTheme(android.R.style.Theme_Dialog)
przed połączeniemsetContentView(...)
isuper.oncreate()
podczas swojej aktywności.2 - Jeśli nie planujesz zmienić stylu motywu aktywności, którego możesz użyć
(jak wspomniał @faisal khan)
źródło
<activity android:theme="@android:style/Theme.Dialog" />
) i programowo ustaw temat motywu na okno dialogowe lub aktywność w programie onCreate stackoverflow.com/a/35915764/2898715Jeśli potrzebujesz wersji Appcompat
style.xml
yourmanifest.xml
źródło
<item name="windowNoTitle">true</item>
żeby to działało dla mnie. Dodałem również<item name="android:windowActionBar">false</item>
dla dobrego pomiaru.<item name="android:windowNoTitle">true</item>
nie działał (Android 5.0.1) i musiałem zmienić na<item name="windowNoTitle">true</item>
Jeśli twoja aktywność jest renderowana jako okno dialogowe, po prostu dodaj przycisk do pliku xml swojej aktywności,
Następnie dołącz odbiornik kliknięć do kodu Java działania. W słuchaczu po prostu zadzwoń
finish()
To powinno zamknąć twoje okno dialogowe i powrócić do aktywności wywoływania.
źródło
Jeśli chcesz usunąć nagłówek aktywności i zapewnić niestandardowy widok okna dialogowego, dodaj następujące elementy do bloku aktywności manifestu
i zaprojektuj swój plan aktywności z pożądanym widokiem
źródło
Ustaw motyw w pliku manifestu Androida.
I ustaw stan okna dotykowego, aby zakończyć.
źródło
Utwórz aktywność jako okno dialogowe, oto pełny przykład
AndroidManife.xml
<activity android:name=".appview.settings.view.DialogActivity" android:excludeFromRecents="true" android:theme="@style/Theme.AppCompat.Dialog"/>
DialogActivity.kt
Activity_dialog.xml
źródło
Czasami możesz uzyskać wyjątek podany poniżej
Przyczyna: java.lang.IllegalStateException: Musisz użyć motywu Theme.AppCompat (lub potomka) z tą aktywnością.
Aby rozwiązać, możesz użyć prostego rozwiązania
dodaj motyw swojej aktywności jako manifest dla appCompact.
Może być komuś pomocny.
źródło