Activity使用Dialog样式导致点击空白处自动关闭的问题

将Activity设置成窗口的样式实现Dialog或者Popupwindow效果在开发中是很常用的一种方式,在AndroidMenifest.xml中将需要设置的Activity增加android:theme="@android:style/Theme.Dialog"属性即可。但是窗口化的Activity有个问题就是:点击窗口空白处Activity会finish。如何避免这个问题呢,办法如下:

一、如果API Level>=11有两种方式:

1、
res\values\styles.xml

[html] view
plain
copy

  1. <resources>  
  2.     <style name="Theme.SoundRecorder" parent="@android:style/Theme.Holo.DialogWhenLarge">  
  3.         <item name="android:windowCloseOnTouchOutside">false</item>  
  4.     </style>  
  5. </resources>  

2、

[java] view
plain
copy

  1. YourActivity.this.setFinishOnTouchOutside(false);  

二、如果API Level<11

[java] view
plain
copy

  1. @Override  
  2.     public boolean onTouchEvent(MotionEvent event) {  
  3.         if (event.getAction() == MotionEvent.ACTION_DOWN && isOutOfBounds(this, event)) {  
  4.             return true;  
  5.         }  
  6.         return super.onTouchEvent(event);  
  7.     }  
  8.   
  9.     private boolean isOutOfBounds(Activity context, MotionEvent event) {  
  10.         final int x = (int) event.getX();  
  11.         final int y = (int) event.getY();  
  12.         final int slop = ViewConfiguration.get(context).getScaledWindowTouchSlop();  
  13.         final View decorView = context.getWindow().getDecorView();  
  14.         return (x < -slop) || (y < -slop)|| (x > (decorView.getWidth() + slop))|| (y > (decorView.getHeight() + slop));  
  15.     }  
时间: 2024-09-21 02:30:27

Activity使用Dialog样式导致点击空白处自动关闭的问题的相关文章

Android 中自定义Dialog样式的Activity点击空白处隐藏软键盘功能(dialog不消失)

一.需求触发场景: 项目中需要开发带有EditText的Dialog显示,要求在编辑完EditText时,点击Dilog的空白处隐藏软键盘.但是Dialog不会消失.示例如下: 二.实现方法: 发布需求时,我个人曾想过直接通过new的方式直接创建Dialog,经过多次尝试,无法实现要求,所以采用将Activity设置为Dialog样式进行展示,调用方法实现需求.具体实现如下: 本次演示示例的工程结构: 2.1AndroidMainfest.xml配置文件 需要在配置文件中将需要显示为dialog

Android实现可使用自定义透明Dialog样式的Activity完整实例_Android

本文实例讲述了Android实现可使用自定义透明Dialog样式的Activity.分享给大家供大家参考,具体如下: 有时你需要一个对话框,但同时对话框中的内容有更多控制和能控制其生命周期,这时你可以使用带有Dialog样式的Activity来应用你的项目中,想使Activity有对话框那样效果可以在Androidmanifest中添加 Android:style/Theme.Dialog 的主题特性 例如这样: <activity android:name="MyDialogActivi

Android实现可使用自定义透明Dialog样式的Activity完整实例

本文实例讲述了Android实现可使用自定义透明Dialog样式的Activity.分享给大家供大家参考,具体如下: 有时你需要一个对话框,但同时对话框中的内容有更多控制和能控制其生命周期,这时你可以使用带有Dialog样式的Activity来应用你的项目中,想使Activity有对话框那样效果可以在Androidmanifest中添加 Android:style/Theme.Dialog 的主题特性 例如这样: <activity android:name="MyDialogActivi

android 修改系统的dialog样式

android 修改系统的dialog样式 一.觉得自定义配置文件麻烦?那就来修改系统自定义XML文件来实现修改系统dialog的样式吧. 如果是在XML中样式:首先来说下样式.  在 Style.xml 文件(如果没有该文件就创建一个XML名为Style.xml)  <!--重写系统弹出Dialog --> <style name="myDialogTheme" parent="android:Theme.Dialog"> <item

Android中自定义Activity和Dialog的位置大小背景和透明度等

1.自定义Activity显示样式 先在res/values下建colors.xml文件,写入: [xhtml] view plaincopy <?xml version="1.0" encoding="utf-8"?>   <resources>       <!-- 设置透明度为56%(9/16)左右 -->       <color name="transparent">#9000</c

Bootstrap 3的box-sizing样式导致UEditor控件的图片无法正常缩放的解决方案_javascript技巧

UEditor组件是百度提供的一套开源的web在线所见即所得富文本编辑器,具有轻量,可定制,注重用户体验等特点,基于MIT协议,功能很强大.最近在使用的过程中发现其中上传的图片(或者插入已有的表情包图片)都无法正常缩放,选中图片,用鼠标点击并拖动图片边沿的小标签,图片只能缩小不能放大.尝试过很多方法都没办法解决,甚至检查了js源码,也没有发现有任何异常的地方. 后来无意中发现页面上引入了Bootstrap,而Bootstrap默认将box-sizing样式统一设成border-box了.具体内容

button没写type=button会导致点击时提交

 点击了一个弹窗中的按钮,想到弹窗消失了,经测试后发现button 没写type=button会导致点击时提交 有个地方很奇怪:点击了一个弹窗中的按钮,没想到弹窗消失了,经公司的js高手调试,发现了其中的奥秘  代码如下: <button class="btn btn_set_wj" onclick="add_q()">添加调查问卷</button>    加一个type ="button" 就好了:   代码如下: &l

h5跳转回activity-H5跳转回activity,怎么获取 它的点击事件啊

问题描述 H5跳转回activity,怎么获取 它的点击事件啊 android里面嵌入一个纯h5,要点击h5左上叫 一个按钮 返回activity界面,怎么求哥哥姐姐 给个建议,能给一段代码最好? 谢谢啦! 解决方案 android Activity 跳转回传数据 解决方案二: android Activity 跳转回传数据

IOS 点击空白处隐藏键盘的几种方法

IOS7 点击空白处隐藏键盘的几种方法 iOS开发中经常要用到输入框,默认情况下点击输入框就会弹出键盘,但是必须要实现输入框return的委托方法才能取消键盘的显示,对于用户体验来说很不友好,我们可以实现点击键盘以外的空白区域来将键盘隐藏,以下我总结出了几种隐藏键盘的方法: 首先说明两种可以让键盘隐藏的Method: 1.[view endEditing:YES]  这个方法可以让整个view取消第一响应者,从而让所有控件的键盘隐藏. 2.[textFiled resignFirstRespon