1.设置窗口风格 :
①在Manifest中设置主题属性android:theme="@android:style/Theme.Dialog",或者 Theme.Holo.Dialog.
②在Activity的onCreate方法中设置,必须在setContentView之前调用setTheme(android.R.style.Theme_Holo_Dialog)
使用Theme.Holo.Dialog为Android 4.X风格,效果较佳;而Theme.Dialog风格是2.X风格,较为落伍.
2.设置布局属性:
在调整界面的过程中,会发现Dialog风格的Activity和AlertDialog界面效果相差较大,这主要是因为AlertDialog使用了特性的属性.
例如:
Button风格 : style="?android:attr/buttonBarButtonStyle"
Button外层Layout风格 : style="?android:attr/buttonBarStyle"
水平分割线 : android:background="?android:attr/dividerHorizontal"
内容字体字号 : android:textAppearance="?android:attr/textAppearanceMedium"
以下是样例:
<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="vertical" > <TextView android:id="@+id/live_wallpaper_dialog_content" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginBottom="5dp" android:layout_marginTop="5dp" android:gravity="center_vertical|center_horizontal" android:text="This is Content" android:textAppearance="?android:attr/textAppearanceMedium" /> <View android:layout_width="match_parent" android:layout_height="1dp" android:background="?android:attr/dividerHorizontal" /> <LinearLayout style="?android:attr/buttonBarStyle" android:layout_width="match_parent" android:layout_height="wrap_content" android:measureWithLargestChild="true" > <Button android:id="@+id/live_wallpaper_dialog_cancel" style="?android:attr/buttonBarButtonStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="cancel" /> <Button android:id="@+id/live_wallpaper_dialog_download" style="?android:attr/buttonBarButtonStyle" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_weight="1" android:text="download" /> </LinearLayout> </LinearLayout>
3.如何设置点击空白处不退出Activity :
AlertDialog是设置setCanceledOnTouchOutside(false)来实现的.
而Activity是通过设置setFinishOnTouchOutside(false);来达到效果.