兩種常規方式實現dialog不會因爲點擊空白處而消失
Dialog控件
這種情況是最簡單的,Android本身自己就提供了相應的方法來實現。使用如下代碼即可:
dialog.setCanceledOnTouchOutside(false);
Dialog樣式
用Activity使用Dialog樣式來實現
自定義Dialog樣式來實現不同的Dialog,但是很多情況下我習慣直接用activity來實現不同樣式的dialog,只要在AndroidManifest.xml文件中註冊theme爲Dialog即可,例如:
<activity
android:name="com.example.androidtest.MyDialogActivity"
android:theme="@android:style/Theme.Holo.Light.Dialog">
</activity>
在這種情況下實現點擊Dialog周圍空白處該Dialog不消失有兩種常用方法:
方法一:
Activity本身已經提供了setFinishOnTouchOutside()方法來實現該功能,我們可以使用如下代碼:
MyDialogActivity.this.setFinishOnTouchOutside(false);
其中MyDialogActivity爲用來實現Dialog樣式的Activity的名字
方法二:
自定義style,讓activity使用我們自定義的theme:
在res\values\styles.xml文件中定義自己的Dialog theme:
<resources>
……
<style name = "MyDialogTheme" parent = "@android:style/Theme.Holo.Light.Dialog">
<item name="android:windowCloseOnTouchOutside">false</item>
</style>
……
</resources>
在AndroidManifest.xml文件中使自己的activity使用該theme:
<activity
android:name="com.example.androidtest.MyDialogActivity"
android:theme="@style/MyDialogTheme" >
</activity>
即可實現點擊Dialog外空白處Dialog不消失