Dialog点击空白处消失问题

我们平时写的dialog(对话框),除了给用户看的文字提示框可以点击空白处消失外,很多情况下不应该让其消失。比如需要让用户输密码才能进入操作界面的dialog,如果点击空白处dialog消失,用户就可以不输密码直接进入我们的应用,这显然影响了我们的功能。
一般情况下有两种常规方式实现dialog:
1、Android提供的Dialog控件
这种情况是最简单的,Android本身自己就提供了相应的方法来实现。使用如下代码即可:

dialog.setCanceledOnTouchOutside(false);

这样点击dialog框外的空白处dialog也不会消失。
2、用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不消失

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,985评论 25 708
  • ¥开启¥ 【iAPP实现进入界面执行逐一显】 〖2017-08-25 15:22:14〗 《//首先开一个线程,因...
    小菜c阅读 6,508评论 0 17
  • 本文会不定期更新,推荐watch下项目。 如果喜欢请star,如果觉得有纰漏请提交issue,如果你有更好的点子可...
    天之界线2010阅读 13,563评论 10 123
  • 白鹿原上的秋庄稼大多种的是玉米。里面零星地套种黄豆,绿豆或小豆。四周及中间有几道稠密的豆行。豆行的豆苗较稠,但不影...
    泰山寒梅阅读 678评论 34 31
  • 坚持不懈,勇往直前,创造属于自己的舞台。 一直没有看电视的习惯,老公倒是喜欢去电视上看看最近有没有什么好节目,真是...
    桃兰天下阅读 232评论 0 2