我有一个名字的活动 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

您可以在Value/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();
    }
});

那应该解散您的对话,将您返回到呼叫活动。

如果要删除活动标头并为对话框提供自定义视图,将以下内容添加到您的活动块

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

并使用您所需的视图设计您的Activity_layout

在您的Android清单文件中设置主题。

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

并将对话框保持联系以完成。

this.setFinishOnTouchOutside(false);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top