Android中的diglog对话框
2016-04-24 11:34
603 查看
Dialog 对话框在Android是一种极为常见的交互方式,常在需要较弹出重要的信息的提示,或需要用户进行简单交互的时候使用Android中的对话框形式大致可分为五种:分别是一般对话框形式,列表对话框形式,单选按钮对话框,多选按钮对话框,自定义对话框。现在几乎所有的手机的应用都有对话框,主要用于选择或是退出,系统也为我们封装了对话框,但本人认为系统自带的比较难看,所有都用自定义的对话框。一、首先,我们先介绍一下系统的一般对话框形式。在创建Dialog的时候,首先需要使用Builder类来设置Dialog的各种属性AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
设置完成后调用 builder.show()方法即可显示对话框
}});
//设置一个NeutralButton,普通按钮通常放“取消”,第二个参数是:点击事件
builder.setNeutralButton("忽略", new DialogInterface.OnClickListener() {
}});
//通过调用show方法,来显示出该对话框
二、列表对话框形式
@Override
public void onClick(DialogInterface dialog, int which){
Toast.makeText(MainActivity.this, "选择的人物是:" + characters[which], Toast.LENGTH_SHORT).show();
}});
builder.show();
三、单选按钮对话框private void showMyDialog() {AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
final String[] sex = {"男", "女"};//设置一个单项选择下拉框, 第一个参数指定我们要显示的一组下拉单选框的数据集合,第二个参数代表索引,指定默认哪一个单选框被勾选上,0位置就默认是选男(数组的下标默认从0开始),第三个参数给每一个单选项绑定一个监听builder.setSingleChoiceItems(sex, 0, new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which){Toast.makeText(MainActivity.this, "您选择的性别为:" + sex[which], Toast.LENGTH_SHORT).show();}
});builder.setPositiveButton("确定", null);builder.setNegativeButton("取消",null);builder.show();}
四、多选按钮对话框
private void showMyDialog() {
五、自定义的Dialogmydialog.xml:
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.mipmap.ic_launcher);builder.setTitle("请输入用户名和密码");// 通过LayoutInflater来加载一个xml的布局文件作为一个View对象View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.mydialog, null);// 设置我们自己定义的布局文件作为弹出框的Content
builder.setView(view);final EditText username = (EditText)view.findViewById(R.id.username);
final EditText password = (EditText)view.findViewById(R.id.password); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Overridepublic void onClick(DialogInterface dialog, int which) {String name = username.getText().toString();String password = password.getText().toString();// 将输入的用户名和密码打印出来
Toast.makeText(MainActivity.this, "用户名: " + name + ", 密码: " + password, Toast.LENGTH_SHORT).show();}
});builder.setNegativeButton("取消", null);builder.show();}
本人菜鸟一个,有什么不对的地方还望大家指出,大神勿喷!
方法 | 描述 | 示例 |
setTitle(CharSequence title) | 设置布局 | builder.setTitle(“Title”) |
setMessage(CharSequencemessage) | 设置内容 | builder.setMessage(“内容”) |
setView(View view) | 设置内容布局 | builder.setView(view); |
setItems(CharSequence[] items,final OnClickListener listener) | 设置对话框要显示的一个 list | builder.setItems(new String[]{“a”,”b”},null); |
setMultiChoiceItems | 设置对话框显示一些列复选框第一个参数是各个选项第二个参数是默认状态第三个参数是选中监听 | builder.setMultiChoiceItems(new String[]{"a","b"},new boolean[]{true,true},null); |
setNeutralButton | 普通按钮 | builder.setPositiveButton(" |
private void showMyDialog() {
//通过AlertDialog.Builder这个类来实例化我们的一个AlertDialog的对象,可以对Dialog的各个参数进行设置 AlertDialog.Builder builder = new AlertDialog.Builder(this);
//设置Title的标题 builder.setTitle("MainActivity");
//设置Title的图标builder.setIcon(R.mipmap.ic_launcher);
//设置来显示主要的信息builder.setMessage("欢迎来到MainActivity");
//设置一个PositiveButton,积极按钮通常放“确定”,第二个参数是:点击事件 builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { Toast.makeText(MainActivity.this, "positive: " + which,Toast.LENGTH_SHORT).show(); } });
//设置一个NegativeButton,消极按钮通常放“取消”,第二个参数是:点击事件 builder.setNegativeButton("取消",new DialogInterface.OnClickListener(){ @Override public void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, "negative: " + which,Toast.LENGTH_SHORT).show();
}});
//设置一个NeutralButton,普通按钮通常放“取消”,第二个参数是:点击事件
builder.setNeutralButton("忽略", new DialogInterface.OnClickListener() {
@Override public void onClick(DialogInterface dialog, int which) {Toast.makeText(MainActivity.this, "neutral: " + which,Toast.LENGTH_SHORT).show();
}});
//通过调用show方法,来显示出该对话框
builder.show();
}
二、列表对话框形式
private void showNameDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("选择一个人物");
//指定下拉列表的显示数据 final String[] characters = {"鸣人", "小樱", "佐助", "大蛇丸", "小李"}; //设置一个下拉的列表选择项builder.setItems(characters , new DialogInterface.OnClickListener(){
@Override
public void onClick(DialogInterface dialog, int which){
Toast.makeText(MainActivity.this, "选择的人物是:" + characters[which], Toast.LENGTH_SHORT).show();
}});
builder.show();
}
三、单选按钮对话框private void showMyDialog() {AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.mipmap.ic_launcher);
builder.setTitle("选择性别");
final String[] sex = {"男", "女"};//设置一个单项选择下拉框, 第一个参数指定我们要显示的一组下拉单选框的数据集合,第二个参数代表索引,指定默认哪一个单选框被勾选上,0位置就默认是选男(数组的下标默认从0开始),第三个参数给每一个单选项绑定一个监听builder.setSingleChoiceItems(sex, 0, new DialogInterface.OnClickListener(){@Overridepublic void onClick(DialogInterface dialog, int which){Toast.makeText(MainActivity.this, "您选择的性别为:" + sex[which], Toast.LENGTH_SHORT).show();}
});builder.setPositiveButton("确定", null);builder.setNegativeButton("取消",null);builder.show();}
四、多选按钮对话框
private void showMyDialog() {
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this); builder.setIcon(R.mipmap.ic_launcher); builder.setTitle("爱好");
final String[] hobbies = {"篮球", "足球", "网球", "乒乓球"};
// 设置一个单项选择下拉框
//第一个参数指定我们要显示的一组下拉多选框的数据集合,
//第二个参数代表哪几个选项被选择,如果是null,则表示一个都不选择,如果希望指定哪一个多选选项框被选择,需要传递一个boolean[]数组进去,其长度要和第一个参数的长度相同,例如第一个和第四个的状态是被选中的,则{true, false, false, true}; //第三个参数给每一个多选项绑定一个监听器
builder.setMultiChoiceItems(hobbies, null, new DialogInterface.OnMultiChoiceClickListener(){
StringBuffer str = new StringBuffer(100);
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked){
if(isChecked)
{
str.append(hobbies[which] + ", ");
}Toast.makeText(MainActivity.this, "爱好为:" + str.toString(), Toast.LENGTH_SHORT).show();
}});
builder.setPositiveButton("确定",null);
builder.setNegativeButton("取消", null);
builder.show();
}
五、自定义的Dialogmydialog.xml:
<?xml version="1.0" encoding="utf-8"?> <LinraLayout
xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent"
android:orientation="vertical">
<EditText
android:id="@+id/username" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="username"/>
<EditText
android:id="@+id/password" android:layout_width="match_parent" android:layout_height="wrap_content" android:hint="password"/>
</LinraLayout>private void showMyDialog(){
AlertDialog.Builder builder = new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.mipmap.ic_launcher);builder.setTitle("请输入用户名和密码");// 通过LayoutInflater来加载一个xml的布局文件作为一个View对象View view = LayoutInflater.from(MainActivity.this).inflate(R.layout.mydialog, null);// 设置我们自己定义的布局文件作为弹出框的Content
builder.setView(view);final EditText username = (EditText)view.findViewById(R.id.username);
final EditText password = (EditText)view.findViewById(R.id.password); builder.setPositiveButton("确定", new DialogInterface.OnClickListener() { @Overridepublic void onClick(DialogInterface dialog, int which) {String name = username.getText().toString();String password = password.getText().toString();// 将输入的用户名和密码打印出来
Toast.makeText(MainActivity.this, "用户名: " + name + ", 密码: " + password, Toast.LENGTH_SHORT).show();}
});builder.setNegativeButton("取消", null);builder.show();}
本人菜鸟一个,有什么不对的地方还望大家指出,大神勿喷!
![](http://static.blog.csdn.net/xheditor/xheditor_emot/default/tongue.gif)
相关文章推荐
- Android中使用GridLayout网格布局来制作简单的计算器App
- 【读书笔记】Android安全机制解析与应用实践之源码分析
- 在ADT和Android Studio中配置和使用Git
- Android中使用ContentProvider管理系统资源的实例
- Android控件之ListView(一)
- Android中Intent组件详解
- RxJava大全以及RxAndroid
- Android学习第八周_使用率超高的多线程开发
- Android控件之View的事件分发机制探索
- Android控件篇之视图控件scrollview探索
- 初步了解响应式框架——agera
- Android中的Intent对象完全解析
- 【整理自慕课网】Android动感系列-扫一扫 ZXing
- android Webview中注入js,用于解决第三方页中出现返回事件window.history.go(-1),无法响应问题
- 加速Android Studio/Gradle构建
- Android AIDL 进程之间的通信
- Xamarin.Android之布局文件智能提示问题
- Android中调用系统的文件浏览器及自制简单的文件浏览器
- Android学习(42) -- 自定义控件(6)下拉选择实现( 动态ListView + popupWindow)
- 举例讲解Android应用中SimpleAdapter简单适配器的使用