Android 中Dialog點擊空白處會消失問題

兩種常規方式實現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不消失

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章