前言:
Android提供了多种对话框,我们在平时做开发的时候,免不了会用到各种各样的对话框。本文主要讲述了几种常见的对话框。下面我就把相关的内容在这里分享一下。
一、对话框种类
普通对话框
单选对话框
多选对话框
列表对话框
自定义对话框
二、代码示例
1 普通对话框:
package com.example.administrator.review;
import android.content.DialogInterface;
import android.content.Intent;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.Adapter;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.Toast;
import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;
import static android.R.attr.dial;
public class MainActivity extends AppCompatActivity {
private Button btn_normal;
//展示普通对话框
public void showNormalAlertDialog(){
AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.tiger); //设置图标
builder.setTitle("普通对话框"); // 设置标题
builder.setMessage("是否退出"); // 设置消息
// 设置确定按钮(右面)
builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "点击了确定按钮", Toast.LENGTH_SHORT).show();
}
});
//设置取消对话框(在setPositiveButton左面)
builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "点击了取消按钮", Toast.LENGTH_SHORT).show();
}
});
// 如果想添加中间显示按钮可以调用setNeutralButton()方法。
AlertDialog dialog= builder.create();
dialog.show();// 显示对话框
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
btn_normal = (Button) findViewById(R.id.dialog_normal);
btn_normal.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
showNormalAlertDialog();
}
});
}
运行成功如下图:
注:由于要多次用到按钮,而按钮有onclick属性,故从下面对话框开始就不一一设事件了而是用属性函数调用展示函数即可
2 单选对话框
// 展示单选对话框
public void showSingleAlertDialog(){
final String [] subj ={"android","linux","java","ios","c","html"};
AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
builder.setIcon(R.drawable.tiger);
builder.setTitle("单选对话框");
builder.setSingleChoiceItems(subj, 0, new DialogInterface.OnClickListener() {
// 第二个参数为默认选中项 在这里设为第一项
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "我选择"+subj[which]+"这门课", Toast.LENGTH_SHORT).show();
}
});
builder.setPositiveButton("提交", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "您已经提交您的选择", Toast.LENGTH_SHORT).show();
}
});
AlertDialog dialog=builder.create();
dialog.show();
}
运行成功如下图:
3 多选对话框
// 多选对话框
public void showMulAlertDialog(){
final String []subj={"android","linux","java","ios","c"};
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setIcon(R.drawable.tiger);
builder.setTitle("多选对话框");
builder.setMultiChoiceItems(subj, null, new DialogInterface.OnMultiChoiceClickListener() {
@Override
public void onClick(DialogInterface dialog, int which, boolean isChecked) {
if(isChecked){
Toast.makeText(MainActivity.this, "我喜欢"+subj[which],Toast.LENGTH_SHORT).show();
}else{
Toast.makeText(MainActivity.this, "我不喜欢"+subj[which],Toast.LENGTH_SHORT).show();
}
}
});
builder.setPositiveButton("提交", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "您已经提交您的选择", Toast.LENGTH_SHORT).show();
}
});
AlertDialog dialog= builder.create();
dialog.show();
}
运行成功如下图:
4 列表对话框
// 列表对话框
public void showListAlertDialog(){
final String []subj={"android","linux","java","ios","c"};
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setIcon(R.drawable.tiger);
builder.setTitle("列表对话框");
builder.setItems(subj, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Toast.makeText(MainActivity.this, "您选择了"+subj[which], Toast.LENGTH_SHORT).show();
}
});
AlertDialog dialog= builder.create();
dialog.show();
}
运行成功如下图:
5 自定义对话框
// 自定义对话框
public void myAlertDialog(){
AlertDialog.Builder builder=new AlertDialog.Builder(this);
builder.setIcon(R.drawable.tiger);
builder.setTitle("自定义对话框");
LayoutInflater in=LayoutInflater.from(this);
View v=in.inflate(R.layout.fruit_item,null);
builder.setView(v);
AlertDialog dialog=builder.create();
dialog.show();
}
注 :由于自定义对话框需要自定义layout布局故先给出布局xml代码
运行成功如下图:
附:
这些对话框按钮xml代码如下:
三 、本文小结
辛辛苦苦终于把常见的几种对话框简单的总结了一下,在上文中 有一些代码还是值得在这里再阐述一下的如:
1
AlertDialog dialog= builder.create();
dialog.show();
展示对话框时当然你也可以用builder.show();直接展示。
2
在builder.setPositiveButton()这个对话框事件处理中,函数接收两个参数:按钮名字,事件,不处理时可以置null;
如 builder.setPositiveButton("确定",null);
3 单选 多选 列表 自定义对话框时前面代码类似几乎类似,后面就是调用对话框函数不同。
如:
builder.setSingleChoiceItems(subj, 0, new DialogInterface.OnClickListener()
这个单选的部分代码, 单选也有事件处理 第一个参数为数据源,可以在前面自定义为数组类型。第二个为默认选中项这里默认为第一项,第三个参数为事件处理。在多选对话框中第二个参数可以置为null,默认不选。
经过上面的分析相信作为初学者的我们应该是可以看懂的。最近刚学完基础,把视屏及书上的知识过了一遍,自己总结时写下了这个,第一次写这个东西写的不好,大家都不要介意嘿嘿,希望这篇文章对你们有所帮助!!!