Android系统对话框——自定义关闭
Android系统对话框——自定义关闭
Dialog是我们在项目中经常用到的,5.x以后的Dialog也很好看,很安卓风,Android也给我们提供了新的包,低版本可以显示一样的效果。我们在使用的导入v7包下的Dialog即可。
样式不是重点,我们点击Button以后,Dialog就会自动关闭,像这样:
但是有的情况,我们是想要点击完Button以后和我们一些交互的,不要立即关闭,我们想要自定义关闭,像这样:
下面进入正题了
自定义关闭
原生的使用方法,就不再介绍了,可以参照以前的文章:Android系统对话框
思路:原理很简单,我们创建Dialog的时候,可以给Dialog设置标题,内容,以及按钮,像 PositiveButton 等等。
我们以 PositiveButton 举例,我们想要点击 PositiveButton 以后不自动关闭,那我们自定义它的点击事件就好了。
在自定义之前,要首先保证我们添加了 PositiveButton,不然我们在获取 PositiveButton 的时候会报空指针,下面直接上代码
自定义Dialog
package com.kongqw.myapplication;
import android.content.Context;
import android.support.v7.app.AlertDialog;
import android.text.TextUtils;
import android.view.View;
import android.widget.AutoCompleteTextView;
import android.widget.Button;
import android.widget.Toast;
/**
* Created by kqw on 2016/4/14.
* 自定义Dialog
*/
public class MyDialog extends AlertDialog.Builder {
private AlertDialog mDialog;
private AutoCompleteTextView mAutoCompleteTextView;
// private DialogOnClickListener mDialogOnClickListener;
public MyDialog(Context context) {
super(context);
// changeUserNameTool = new ChangeUserNameTool(context);
initDialog(context);
}
private void initDialog(Context context) {
View viewChangeUser = View.inflate(context, R.layout.view_mydialog, null);
mAutoCompleteTextView = (AutoCompleteTextView) viewChangeUser.findViewById(R.id.autoCompleteTextView);
setTitle("自定义Dialog");
setView(viewChangeUser);
setPositiveButton("确定", null);
setNegativeButton("取消", null);
mDialog = create();
mDialog.show();
// 自定义Positive按钮 实现点击以后不自定隐藏Dialog
setPositiveButton();
}
/**
* 在我们重新自定义PositiveButton的点击事件的时候,一定要保证之前添加了 PositiveButton
* 就是 setPositiveButton("确定", null);
* 不然下面的 getButton(AlertDialog.BUTTON_POSITIVE); 会报空指针
*/
public void setPositiveButton() {
Button positiveButton = mDialog.getButton(AlertDialog.BUTTON_POSITIVE);
positiveButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// 测试
if (TextUtils.isEmpty(mAutoCompleteTextView.getText().toString())) {
mAutoCompleteTextView.setError("密码不能为空");
} else {
Toast.makeText(getContext().getApplicationContext(), "修改成功", Toast.LENGTH_SHORT).show();
mDialog.dismiss();
}
}
});
}
// public void setDialogOnClickListener(DialogOnClickListener listener) {
// mDialogOnClickListener = listener;
// }
}
View(参考)
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal">
<android.support.design.widget.TextInputLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<AutoCompleteTextView
android:id="@+id/autoCompleteTextView"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="@dimen/x45"
android:hint="修改密码" />
</android.support.design.widget.TextInputLayout>
</RelativeLayout>
使用(参考)
public void myDialog(View view) {
new MyDialog(this);
}
接口回调(参考)
如果点击按钮以后,有一些操想要在主类操作,可以添加一个接口回调
package ……;
/**
* Created by kqw on 2016/4/14.
* Dialog回调接口
*/
public interface DialogOnClickListener {
public void onPositiveButton();
public void onNegativeButton();
}
Android系统对话框——自定义关闭的更多相关文章
- Android系统对话框
Android系统对话框 效果图 2个按钮的对话框 3个按钮的对话框 自定义View的对话框 单选对话框 多选对话框 列表框 Code XML <?xml version="1.0&q ...
- Android系统中自定义按键的短按、双击、长按事件
在项目中碰到这样的问题: 由于系统中的按键在底层做了重新定义或者新增了按键,此时需要在APP层对按键事件(keyevent)做分解处理,模拟Android系统做法,把keyevent分解成: 1.单击 ...
- Android -- 系统和自定义Notification
Notification是一种让你的应用程序在不使用Activity的情况下警示用户,Notification是看不见的程序组件警示用户有需要注意的事件发生的最好途径. 作为UI部分,Notifica ...
- Android系统编程入门系列之应用级文件在应用程序间的共享
在上篇文章了解到应用级文件只能被其所创建的应用程序所访问,那么其他应用程序是不是就无论如何都无法访问了呢?肯定不是的,只要文件经过其创建的应用程序授权,还是可以被其他应用程序所访问的.这也就是应用级文 ...
- Android系统原理与源码分析(1):利用Java反射技术阻止通过按钮关闭对话框
原文出处:博主宇宙的极客http://www.cnblogs.com/nokiaguy/archive/2010/07/27/1786482.html 众所周知,AlertDialog类用于显示对话框 ...
- Android中制作自定义dialog对话框的实例
http://www.jb51.net/article/83319.htm 这篇文章主要介绍了Android中制作自定义dialog对话框的实例分享,安卓自带的Dialog显然不够用,因而我们要继 ...
- 【转】Android 系统菜单与自定义菜单
Android 系统菜单与自定义菜单实现方法如下:系统菜单显示DefaultMenu.java package com.wxz.menu; import com.wxz.menu.R; import ...
- Android———最详细的系统对话框使用
在实际应用开发中,用到系统对话框中的情况几乎是没有的.按开发流程来说,UI工程师都会给出每一个弹窗的样式,故而在实际开发中都是自定义弹窗的. 即使用到的地方不多,但是我们也是需要了解并且能熟练的运用它 ...
- Android———最详细的系统对话框(AlertDialog)详解
在实际应用开发中,用到系统对话框中的情况几乎是没有的.按开发流程来说,UI工程师都会给出每一个弹窗的样式,故而在实际开发中都是自定义弹窗的. 即使用到的地方不多,但是我们也是需要了解并且能熟练的运用它 ...
随机推荐
- phpmyadmin设置编码和字符集gbk或utf8_导入中文乱码解决方法
一.phpmyadmin设置新建数据库的默认编码为utf8编码的方法 1:新建数据库 my_db 2:使用sql语句 set character_set_server=utf8; //设置默认新 ...
- Paper藐小之处明察秋毫故时有物外之趣
暂且针对第一篇叶脉提取的paper 插入图像的"图 N": 英 Times New Roman, 中 宋体, 10磅. 文末的引文: 两端对齐. 流程图框格内文字换行时, 忌: 将 ...
- 复习HTML+CSS(6)
n 表格和表单的嵌套顺序 n 单行文本域 语法格式:<input type="text" 属性="值"> 常用属性 l Name:文本框的名字 ...
- es6-promise源代码重点难点分析
摘要 vue和axios都可以使用es6-promise来实现f1().then(f2).then(f3)这样的连写形式,es6-promise其实现代浏览器已经支持,无需加载外部文件.由于promi ...
- 用AJAX实现上传图片或者文件的方法
大家好,我是小C,最近在项目中用到ajax上传图片文件,本篇我们就说说ajax上传文件. 我们平时用到的AJAX,大部分都是传几个参数就可以了.简单说就是传几个字符串. $.ajax({ url: u ...
- [HNOI 2002]彩票
Description 某地发行一套彩票.彩票上写有1到M这M个自然数.彩民可以在这M个数中任意选取N个不同的数打圈.每个彩民只能买一张彩票,不同的彩民的彩票上的选择不同. 每次抽奖将抽出两个自然数X ...
- [Codeforces]848C - Goodbye Souvenir
题目大意:n个数字,m次操作,支持修改一个数字和查询一个区间内每种数字最大出现位置减最小出现位置的和.(n,m<=100,000) 做法:把每个数字表示成二维平面上的点,第一维是在数组中的位置, ...
- 【NOIP2016】愤怒的小鸟
题目描述 Kiana最近沉迷于一款神奇的游戏无法自拔. 简单来说,这款游戏是在一个平面上进行的. 有一架弹弓位于(0,0)处,每次Kiana可以用它向第一象限发射一只红色的小鸟,小鸟们的飞行轨迹均为形 ...
- 数据结构与算法 —— 链表linked list(05)
反转一个单链表. 进阶:链表可以迭代或递归地反转.你能否两个都实现一遍? 示例 : 给定这个链表:1->2->3->4->5 返回结果: 5->4->3->2 ...
- python2.7入门---变量类型
这篇文章呢,主要是用来记录python中的变量类型学习内容的.接下来就来看一下变量类型,那么什么是变量呢.变量存储在内存中的值.这就意味着在创建变量时会在内存中开辟一个空间.基于变量的数据类型,解 ...