Андроид деятельность как диалог
У меня есть деятельность с именем whereActity
который также имеет дочерние диалоги. Теперь я хочу отобразить это действие как диалог для другого действия.
Как я могу это сделать?
8 ответов:
чтобы начать работу в качестве диалогового окна, я определил его следующим образом в
AndroidManifest.xml
:<activity android:theme="@android:style/Theme.Dialog" />
используйте это свойство внутри вашего
activity
- тег, чтобы избежать, что ваш диалог появляется в списке недавно использованных приложенийandroid:excludeFromRecents="true"
если вы хотите, чтобы ваш диалог / активность не были уничтожены, когда пользователь нажимает за пределами диалогового окна:
после
setContentView()
в своемActivity
использование:
this.setFinishOnTouchOutside(false);
теперь, когда я называю
startActivity()
он отображается как a диалог, с предыдущим действием, показанным, когда пользователь нажимает кнопку Назад.обратите внимание, что если вы используете
ActionBarActivity
(или тема AppCompat), вам нужно будет использовать .
используйте этот код, чтобы действие диалога не закрывалось, когда пользователь касается вне диалогового окна:
this.setFinishOnTouchOutside(false);
требуется уровень API 11
Вы можете определить этот стиль в значениях/стили.xml для выполнения более прежнего всплеска:
<style name="Theme.UserDialog" parent="android:style/Theme.Dialog"> <item name="android:windowFrame">@null</item> <item name="android:windowIsFloating">true</item> <item name="android:windowIsTranslucent">true</item> <item name="android:windowNoTitle">true</item> <item name="android:background">@android:color/transparent</item> <item name="android:windowBackground">@drawable/trans</item> </style>
и использовать его AndroidManifest.XML-код:
<activity android:name=".SplashActivity" android:configChanges="orientation" android:screenOrientation="sensor" android:theme="@style/Theme.UserDialog">
1-Вы можете использовать ту же активность, что и диалог и полный экран, динамически:
вызов
setTheme(android.R.style.Theme_Dialog)
перед вызовомsetContentView(...)
иsuper.oncreate()
в вашей деятельности.2-Если вы не планируете менять стиль темы активности, вы можете использовать
<activity android:theme="@android:style/Theme.Dialog" />
(как упоминалось @faisal khan)
Если ваша деятельность отображается в виде диалогового окна, просто добавьте кнопку в xml вашей деятельности,
<Button android:id="@+id/close_button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="Dismiss" />
затем прикрепите прослушиватель щелчка в коде Java вашего действия. В слушателе, просто позвоните
finish()
Button close_button = (Button) findViewById(R.id.close_button); close_button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { finish(); } });
это должно закрыть ваш диалог, возвращая вас к вызывающей активности.
Если вам нужна версия Appcompat
стиль.xml
<!-- Base application theme. --> <style name="AppDialogTheme" parent="Theme.AppCompat.Light.Dialog"> <!-- Customize your theme here. --> <item name="windowActionBar">false</item> <item name="android:windowNoTitle">true</item> </style>
yourmanifest.xml
<activity android:name=".MyActivity" android:label="@string/title" android:theme="@style/AppDialogTheme"> </activity>