Андроид деятельность как диалог


У меня есть деятельность с именем whereActity который также имеет дочерние диалоги. Теперь я хочу отобразить это действие как диалог для другого действия.

Как я могу это сделать?

8 224

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>

Если вы хотите удалить заголовок действия и предоставить пользовательский вид для диалогового окна, добавьте следующее в блок действия вашего манифеста

android:theme="@style/Base.Theme.AppCompat.Dialog"

и создать свой activity_layout с желаемым видом

установите тему в вашем файле манифеста android.

<activity android:name=".LoginActivity"
            android:theme="@android:style/Theme.Dialog"/>

и установите состояние диалога на ощупь, чтобы закончить.

this.setFinishOnTouchOutside(false);