Android使alertDialog.builder不会点击外面和按返回键消失的方法
这个问题之前一直困扰我,我的需求就是点击对话框外面和按返回键对话框不会消失,按返回键还好解决,拦截下返回键就OK了。
但是点击外面不好解决。之前有人说模态对话框,我看了一会,觉得不是我想要的效果。popWindow的话,必须提供父view.
重新看下api,发现设置setCancelable属性就行了。
如:
public void showNoProject(){ Builder builder = new AlertDialog.Builder(MainActivity.this) .setMessage("您还没有项目,请先添加项目") .setPositiveButton("去添加项目", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }) .setNegativeButton("关闭", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); builder.setCancelable(false); builder.show(); }
还有另外两种实现方法
一、在oncreate()方法中设置Dialog点击屏幕不可取消,实例代码如下:
@Override public void onCreate(Bundle icicle) { super.onCreate(icicle); this.setCancelable(false);// 设置点击屏幕Dialog不消失 int style = DialogFragment.STYLE_NORMAL, theme = 0; setStyle(style,theme); }
二、将Activity设置成窗口的样式实现Dialog或者Popupwindow效果在开发中是很常用的一种方式,在AndroidMenifest.xml中将需要设置的Activity增加android:theme="@android:style/Theme.Dialog"属性即可。但是窗口化的Activity有个问题就是:点击窗口空白处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);
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。
相关推荐
-
Android中PopupWindow响应返回键并关闭的2种方法
PopupWindow 跟我们的 Activity 不一样,因为我们在构造 PW 的时候往往不是继承来的,而是 new 出来的.所以不能使用重写 PW 的 onKeyDown() 之类的方法来截获键盘事件.好在 PW 本身的特性让我们很容易就能做到用返回键来退出,当然我们也可以截获键盘事件,这样就有两种方法了. 方法一: 最简单的方法 在 new 的时候,使用下面的方法: 复制代码 代码如下: popupWindow = new PopupWindow(popupWindow_view, 2
-
android PopupWindow点击外部和返回键消失的解决方法
刚接手PopupWindow的时候,我们都可能觉得很简单,因为它确实很简单,不过运气不好的可能就会踩到一个坑: 点击PopupWindow最外层布局以及点击返回键PopupWindow不会消失 新手在遇到这个问题的时候可能会折腾半天,最后通过强大的网络找到一个解决方案,那就是跟PopupWindow设置一个背景 popupWindow.setBackgroundDrawable(drawable),这个drawable随便一个什么类型的都可以,只要不为空. Demo地址:SmartPopupWi
-
Android开发笔记之:返回键的复写onBackPressed()介绍
在android开发中,当不满足触发条件就按返回键的时候,就要对此进行检测.尤其是当前Activity需要往前一个Activity传送消息时.即Activity1跳转到Activity3如果采用的是startActivityForResult这种方式,如果不重写返回键,程序不知道要返回给Activity1什么内容就会报错.因此,必须对Activity3的返回按键重写,这里让他传一个"ERROR"信息: 复制代码 代码如下: @Override public void onBack
-
Android双击返回键退出程序的实现方法
本文实例讲述了Android双击返回键退出程序的实现方法,是Android程序开发中一个非常实用的功能,分享给大家供大家参考之用.具体方法如下: 一.实现思路: 用户按下返回键时设定一个定时器来监控是否2秒内实现了退出,如果用户没有接着按返回键,则清除第一次按返回键的效果,使程序还原到第一次按下返回键之前的状态.定时器是每次用户按下返回键才去创建. 二.功能代码: /** * 菜单.返回键响应 */ @Override public boolean onKeyDown(int keyCode,
-
Android 拦截返回键事件的实例详解
Android 拦截返回键事件的实例详解 KeyEvent类 Android.View.KeyEvent类中定义了一系列的常量和方法,用来描述Android中的 按键事件和返回键有关的常量和方法有. KeyEvent.KEYCODE_BACK: 表示key类型为返回键 KeyEvent.ACTION_DOWN:表示事件为按下key,如果一直按住不放,则会不停产生此事件. KeyEvent.ACTION_UP:表示事件为为放开key,一次点击key过程只会调用一次. public final in
-
Android返回键功能的实现方法
本文实例讲述了Android返回键功能的实现方法.分享给大家供大家参考.具体如下: 在开发android应用时,常常通过按返回键(即keyCode == KeyEvent.KEYCODE_BACK)就能关闭程序,其实大多情况下并没有关闭改应用 我们可以这样做,当用户点击自定义的退出按钮或返回键时(需要捕获动作),我们在onDestroy()里强制退出应用,或直接杀死进程,具体操作代码如下: public boolean onKeyDown(int keyCode, KeyEvent event)
-
Android 再按一次返回键退出程序实现思路
用户退出应用前给出一个提示是很有必要的,因为可能是用户并不真的想退出,而只是一不小心按下了返回键,大部分应用的做法是在应用退出去前给出一个Dialog,我觉得这样不太友好,用户还得移动手指去按dialog中的按钮.个人觉得"再按一次返回键退出程序"是best practice,实现也很简单,直接上代码: 复制代码 代码如下: private long exitTime = 0; @Override public boolean onKeyDown(int keyCode, KeyEve
-
Android中让按钮拥有返回键功能的方法及重写返回键功能
让按钮拥有返回键的功能很简单,在点击事件加上finish();就OK了. 如: 复制代码 代码如下: public void onClick(View v){ finish(); } finish() 仅仅是把activity从当前的状态退出,但是资源并没有给清理. 其实android的机制决定了用户无法完全退出application,即使用System.exit(). android自己决定何时该从内存中释放程序,当系统没有可用内存时,就会按照一定的优先级来销毁应用程序. android手机操
-
Android使alertDialog.builder不会点击外面和按返回键消失的方法
这个问题之前一直困扰我,我的需求就是点击对话框外面和按返回键对话框不会消失,按返回键还好解决,拦截下返回键就OK了. 但是点击外面不好解决.之前有人说模态对话框,我看了一会,觉得不是我想要的效果.popWindow的话,必须提供父view. 重新看下api,发现设置setCancelable属性就行了. 如: public void showNoProject(){ Builder builder = new AlertDialog.Builder(MainActivity.this) .set
-
Android 双击返回键退出程序的方法总结
Android 双击返回键退出程序的方法总结 下面先说说LZ思路,具体如下: 1. 第一种就是根据用户点击俩次的时间间隔去判断是否退出程序; 2. 第二种就是使用Android中计时器(Timer),其实这俩种都差不多. 思路是有了,,,接下来要怎么开搞呢???用户点击肯定会触发相应的事件,,,我们先来看下面俩个事件的作用... Activity.onKeyDown(); 当某个键被按下时会触发,但不会被任何的该Activity内的任何view处理. 默认按下KEYCODE_BACK键后会回到上
-
Android对话框AlertDialog.Builder使用方法详解
我们在平时做开发的时候,免不了会用到各种各样的对话框,相信有过其他平台开发经验的朋友都会知道,大部分的平台都只提供了几个最简单的实现,如果我们想实现自己特定需求的对话框,大家可能首先会想到,通过继承等方式,重写我们自己的对话框.当然,这也是不失为一个不错的解决方式,但是一般的情况却是这样,我们重写的对话框,也许只在一个特定的地方会用到,为了这一次的使用,而去创建一个新类,往往有点杀鸡用牛刀的感觉,甚至会对我们的程序增加不必要的复杂性,对于这种情形的对话框有没有更优雅的解决方案呢? 幸运的是,an
-
简析Android多种AlertDialog对话框效果
android提供了四类常用的对话框,本文分享具体实现方法: 1.AlertDialog,功能最丰富,实际运用最广泛 2.progressDialog,进度条对话框 3.DatePickerDialog,日期选择对话框 4.TimePickerDialog,时间选择对话框 这里主要介绍第一种,剩下的三种都是第一种的子类,所以其方法,都可以直接使用. 创建一个对话框一般需要下面几个步骤 1.创建AlertDialog.Builder对象 2.对AlertDialog.Builder通过SetTit
-
Android使用AlertDialog创建对话框
AlertDialog类的功能十分强大,它不仅可以生成带按钮的提示对话框,还可以生成带列表的列表对话框,概括起来有一下4种: 1.带确定.中立和取消等N个按钮的提示对话框,其中的按钮个数不是固定的,可以根据需要添加.例如,不需要中立按钮,则可以只生成带有确定和取消按钮的对话框,也可以是只需有一个按钮的对话框. 2.带列表的列表对话框 3.带多个单选列表项和N个按钮的列表对话框 4.带多个多选列表项和N个按钮的列表对话框 在使用AlertDialog类生成对话框时,常用的方法如下所示: setTi
-
Android实现检查并下载APK更新、安装APK及获取网络信息的方法
本文所述实例为一个天气预报中的android代码,主要包括了下载和安装APK.检查Apk更新.显示'已经是最新'或者'无法获取版本信息'对话框.获取当前客户端版本信息.显示版本更新通知对话框.显示下载对话框.判断是否挂载了SD卡.显示文件大小格式:2个小数点显示等.具体实现代码如下: import java.io.ByteArrayInputStream; import java.io.File; import java.io.FileOutputStream; import java.io.I
-
React Native学习之Android的返回键BackAndroid详解
前言 最近在学习使用 React Native开发,iOS搞完,开始适配安卓,由于木有接触过安卓,所以碰到了很多问题,第一个问题,安卓的返回键BackAndroid问题, 我写了一个工具类,来搞定,其中用到了java原生代码与js交互;好吧,下面开始正式内容: 上代码: // BackAndroidTool // 功能: "安卓手机上的返回键" // Created by 小广 on 2016-05-10 下午. // Copyright © 2016年 All rights rese
-
Android Fragment监听返回键的一种合理方式
开场 以下场景为杜撰: 产品经理:"小罗,这个信息发送界面,如果用户输入了内容,点击返回键的时候,要先询问用户是否保存草稿箱哈". 小罗:"收到,这问题简单." 说完小罗就准备着手处理,然后却发现信息编辑界面是一个Fragment,然而Fragment并没有提供返回键点击的直接处理:小罗虽菜,但是摸鱼也摸了些年头了,这问题难不倒小罗. 小罗心想,反正Activity提供了onBackPressed方法,再不济的情况把这个操作分发到Fragment中去就好,可是对于处
随机推荐
- JS实现兼容火狐及IE iframe onload属性的遮罩层隐藏及显示效果
- jQuery.Highcharts.js绘制柱状图饼状图曲线图
- 微信小程序获取循环元素id以及wx.login登录操作
- 深入java对象复制的分析
- Python3操作SQL Server数据库(实例讲解)
- [PHP]实用函数9
- python复制与引用用法分析
- C#基本概念列举详解
- Ubuntu Docker 安装教程
- 使用script的src实现跨域和类似ajax效果
- Javascript call和apply区别及使用方法
- Javascript中获取出错代码所在文件及行数的代码
- SQL判断语句用法和多表查询
- sqlserver中获取当前日期的午夜的时间值的实现方法
- js实现头像图片切割缩放及无刷新上传图片的方法
- Nginx反向代理实现支持长连接详解
- 详解springmvc拦截器拦截静态资源
- C#关于类的只读只写属性实例分析
- java IO数据操作流、对象序列化、压缩流代码解析
- iOS实现设备判断是否安装相关地图(百度、高德等)