我有一个名为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

如果你需要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"

用你想要的视图设计你的activity_layout

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

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

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

this.setFinishOnTouchOutside(false);

创建活动作为对话框,这是完整的例子

AndroidManife.xml <activity android:name=".appview.settings.view.DialogActivity" android:excludeFromRecents="true" android:theme="@style/Theme.AppCompat.Dialog"/> DialogActivity.kt class DialogActivity : AppCompatActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_dialog) this.setFinishOnTouchOutside(true) btnOk.setOnClickListener { finish() } } } activity_dialog.xml <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="#0072ff" android:gravity="center" android:orientation="vertical"> <LinearLayout android:layout_width="@dimen/_300sdp" android:layout_height="wrap_content" android:gravity="center" android:orientation="vertical"> <TextView android:id="@+id/txtTitle" style="@style/normal16Style" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:paddingTop="20dp" android:paddingBottom="20dp" android:text="Download" android:textColorHint="#FFF" /> <View android:id="@+id/viewDivider" android:layout_width="match_parent" android:layout_height="2dp" android:background="#fff" android:backgroundTint="@color/white_90" app:layout_constraintBottom_toBottomOf="@id/txtTitle" /> <TextView style="@style/normal14Style" android:layout_width="match_parent" android:layout_height="wrap_content" android:gravity="center" android:paddingTop="20dp" android:paddingBottom="20dp" android:text="Your file is download" android:textColorHint="#FFF" /> <Button android:id="@+id/btnOk" style="@style/normal12Style" android:layout_width="100dp" android:layout_height="40dp" android:layout_marginBottom="20dp" android:background="@drawable/circle_corner_layout" android:text="Ok" android:textAllCaps="false" /> </LinearLayout> </LinearLayout>