两种常规方式实现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不消失

更多相关文章

  1. ANDROID 后台服务 service
  2. Android学习笔记-保存文件(Saving Files)
  3. [转]Android(安卓)adb不是内部或外部命令 问题解决
  4. 如何查看Android里面其他应用的数据
  5. Android适配器Adapter的学习
  6. Android(安卓)HAL
  7. Android中Alarm的机制
  8. android 项目R文件丢失解决办法
  9. 获取调试版SHA1和发布版SHA1的方法

随机推荐

  1. SQL Server中存储过程比直接运行SQL语句
  2. oracle基础知识总结 part 3 : 三范式,PLSQL
  3. Unable to use slave's temporary direct
  4. CentOS下MySQL的安装和修改用户密码
  5. SQL View查找缺失值,应该很简单
  6. 更大的舞台在等你
  7. sql server查看表空间
  8. 条件复杂的sql语句查询
  9. 根据(var2) (var3) (var3)极限X (var3)对
  10. 条件SQL选择-当返回集为空时,执行另一个选