Android Activity显示成对话框Dialog

方法一

直接设置已有的Dialog样式的主题,比如

1
2
3
<activity
android:name=".DialogActivity"
android:theme="@style/Theme.AppCompat.Dialog"/>

Click and drag to move

方法二

自定义主题theme,让后设置Activity的主题为该主题

先在styles.xml文件中自定义对话框样式的主题

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<resources>
<style name="ActivityDialog">
<!--这是重点,把Activity显示成Dialog-->
<item name="android:windowIsFloating">true</item>
<!--这是第二个重点,对话框外背景半透,才有对话的效果-->
<item name="android:backgroundDimEnabled">true</item>
<!--是否显示标题-->
<item name="android:windowNoTitle">true</item>
<!--设置对话框的背景-->
<item name="android:windowBackground">@android:color/transparent</item>
<!--点击对话框外是否关闭窗口-->
<item name="android:windowCloseOnTouchOutside">true</item>
</style>
</resources>

Click and drag to move

然后把Activity的theme设置成自定义的主题

1
2
3
<activity
android:name=".DialogActivity"
android:theme="@style/ActivityDialog"/>

Click and drag to move

方法三

还有一种方法是继承已有的Dialog主题,这样比较灵活,可以继承父主题已定义的属性,又可以自定义一些属性

比如继承已有的”Theme.AppCompat.Dialog”主题,然后不显示标题,自定义背景色,点击对话框外部关闭对话框。

1
2
3
4
5
<style name="MyDialog" parent="Theme.AppCompat.Dialog">
<item name="android:windowNoTitle">true</item>
<item name="android:windowBackground">@android:color/transparent</item>
<item name="android:windowCloseOnTouchOutside">true</item>
</style>

Click and drag to move

然后设置该主题

1
2
3
<activity
android:name=".DialogActivity"
android:theme="@style/MyDialog"/>

Click and drag to move