我有一个名为whereactivity的活动,它也有子对话框。现在,我想将这个活动显示为另一个活动的对话框。

我该怎么做呢?


当前回答

要以对话框的形式启动activity,我在AndroidManifest.xml中这样定义:

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

在activity标签中使用这个属性可以避免你的对话框出现在最近使用的应用列表中

android:excludeFromRecents="true"

如果你想阻止你的对话框/活动在用户点击对话框外时被破坏:

在setContentView()在你的活动使用:

this.setFinishOnTouchOutside(假);

现在,当我调用startActivity()时,它显示为一个对话框,当用户按下返回按钮时显示上一个活动。

注意,如果你正在使用ActionBarActivity(或AppCompat主题),你需要使用@style/ theme .AppCompat。对话框。

其他回答

使用下面的代码,当用户在对话框外触摸时,对话框活动不会关闭:

this.setFinishOnTouchOutside(false);

要求API等级11

你可以在values/styles.xml中定义这个样式来执行更像以前的Splash:

   <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">

在你的android manifest文件中设置主题。

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

并将对话框状态设置为触摸完成。

this.setFinishOnTouchOutside(false);

1 -你可以动态地使用与对话框和全屏相同的活动:

在Activity中调用setContentView(…)和super.oncreate()之前调用setTheme(android.R.style.Theme_Dialog)。

2 -如果你不打算改变活动主题风格,你可以使用

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

(正如@faisal khan所提到的)

要以对话框的形式启动activity,我在AndroidManifest.xml中这样定义:

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

在activity标签中使用这个属性可以避免你的对话框出现在最近使用的应用列表中

android:excludeFromRecents="true"

如果你想阻止你的对话框/活动在用户点击对话框外时被破坏:

在setContentView()在你的活动使用:

this.setFinishOnTouchOutside(假);

现在,当我调用startActivity()时,它显示为一个对话框,当用户按下返回按钮时显示上一个活动。

注意,如果你正在使用ActionBarActivity(或AppCompat主题),你需要使用@style/ theme .AppCompat。对话框。