Вопрос

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

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

enter image description here

Это было полезно?

Решение

Чтобы начать деятельность как диалог, я определил это так в AndroidManifest.xml:

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

Используйте это свойство внутри вашего activity Теги, чтобы избежать того, что ваш диалог отображается в недавно используемом списке приложений

android:excludeFromRecents="true"

Если вы хотите остановить уничтожение диалога / деятельности, когда пользователь щелкнет вне диалогового окна:

После setContentView() в твоей Activity использовать:

this.setFinishOnTouchOutside(false);

Теперь, когда я звоню startActivity() Он отображается в качестве диалога с предыдущей деятельностью, показанной, когда пользователь нажимает кнопку «Назад».

Обратите внимание, что если вы используете ActionBarActivity (или тема appcompat), вам нужно использовать @style/Theme.AppCompat.Dialog вместо.

Другие советы

Используйте этот код так, чтобы диалоговая деятельность не была закрыта, когда пользователь касается диалогового окна:

this.setFinishOnTouchOutside(false);

Требуется API -уровень 11

Вы можете определить этот стиль в значениях/styles.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)

Если вам нужна версия AppCompat

Style.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>

Если ваша деятельность отображается в качестве диалога, просто добавьте кнопку в 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();
    }
});

Это должно отклонить ваш диалог, возвращая вас к вызову.

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

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

и спроектируйте свою active_layout с желаемым представлением

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

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

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

this.setFinishOnTouchOutside(false);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top