Android Activity作为对话框

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

我怎样才能做到这一点?

在这里输入图像描述

作为对话框开始活动,我在AndroidManifest.xml像这样定义它:

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

在你的activity标签中使用这个属性来避免你的Dialog出现在最近使用的应用程序列表中

 android:excludeFromRecents="true" 

如果您希望在用户单击对话框之外时阻止对话/活动被破坏:

在你的Activity使用setContentView()之后:

this.setFinishOnTouchOutside(false);

现在,当我调用startActivity()它显示为一个对话框,当用户按下后退button时显示前一个活动。

请注意,如果您使用的是ActionBarActivity (或AppCompat主题),则需要使用@style/Theme.AppCompat.Dialog

使用此代码,以便在用户触摸对话框之外时,对话框活动不会被closures:

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

1 – 您可以使用与对话框和全屏相同的dynamic:

在你的Activity中调用setContentView(...)super.oncreate()之前调用setTheme(android.R.style.Theme_Dialog)

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

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

(如@faisal khan所述)

如果您的活动正在以对话框forms呈现,只需在您的活动的xml中添加一个button,

 <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版本

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> 

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

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

并用你想要的视图devise你的activity_layout