這個問題之前一直困擾我,我的需求就是點(diǎn)擊對話框外面和按返回鍵對話框不會消失,按返回鍵還好解決,攔截下返回鍵就OK了。
但是點(diǎn)擊外面不好解決。之前有人說模態(tài)對話框,我看了一會,覺得不是我想要的效果。popWindow的話,必須提供父view.
重新看下api,發(fā)現(xiàn)設(shè)置setCancelable屬性就行了。
如:
public void showNoProject(){ Builder builder = new AlertDialog.Builder(MainActivity.this) .setMessage("您還沒有項(xiàng)目,請先添加項(xiàng)目") .setPositiveButton("去添加項(xiàng)目", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .setNegativeButton("關(guān)閉", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.setCancelable(false); builder.show(); }
還有另外兩種實(shí)現(xiàn)方法
一、在oncreate()方法中設(shè)置Dialog點(diǎn)擊屏幕不可取消,實(shí)例代碼如下:
@Override public void onCreate(Bundle icicle) { super.onCreate(icicle); this.setCancelable(false);// 設(shè)置點(diǎn)擊屏幕Dialog不消失 int style = DialogFragment.STYLE_NORMAL, theme = 0; setStyle(style,theme); }二、將Activity設(shè)置成窗口的樣式實(shí)現(xiàn)Dialog或者Popupwindow效果在開發(fā)中是很常用的一種方式,在AndroidMenifest.xml中將需要設(shè)置的Activity增加android:theme="@android:style/Theme.Dialog"屬性即可。但是窗口化的Activity有個問題就是:點(diǎn)擊窗口空白處Activity會finish。如何避免這個問題呢,辦法如下:
1、resvaluesstyles.xml
<resources> <style name="Theme.SoundRecorder" parent="@android:style/Theme.Holo.DialogWhenLarge"> <item name="android:windowCloseOnTouchOutside">false</item> </style></resources>
YourActivity.this.setFinishOnTouchOutside(false);
以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持武林網(wǎng)。
新聞熱點(diǎn)
疑難解答
圖片精選