前言:

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();            }        });    }

运行成功如下图:

Paste_Image.png

注:由于要多次用到按钮,而按钮有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();    }

运行成功如下图:

Paste_Image.png

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();    }

运行成功如下图:

Paste_Image.png

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();    }

运行成功如下图:

Paste_Image.png

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 version="1.0" encoding="utf-8"?>        

运行成功如下图:

Paste_Image.png

附:
这些对话框按钮xml代码如下:

<?xml version="1.0" encoding="utf-8"?>    

三 、本文小结

辛辛苦苦终于把常见的几种对话框简单的总结了一下,在上文中 有一些代码还是值得在这里再阐述一下的如:
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,默认不选。

经过上面的分析相信作为初学者的我们应该是可以看懂的。最近刚学完基础,把视屏及书上的知识过了一遍,自己总结时写下了这个,第一次写这个东西写的不好,大家都不要介意嘿嘿,希望这篇文章对你们有所帮助!!!

更多相关文章

  1. Android(安卓)TabViewActivity中overridePendingTransition失效
  2. Android(安卓)打造万能适配器
  3. Android(安卓)Glide Error:Failed to resolve: com.github.bumpt
  4. android native crash日志解析
  5. 【Android】关于Android控件EditText的属性InputType的一些经验
  6. Android(安卓)Fragment 基本了解
  7. Android(安卓)设置全屏和无标题模式
  8. Android关机和重启的调用代码
  9. Android(安卓)自定义弹性ListView控件实例代码(三种方法)

随机推荐

  1. Android Jetpack-ViewModel
  2. Android 按钮点击两次触发不同的事件
  3. java\tomcat\android\mysql 环境变量
  4. Android中fitsSystemWindows属性的用法总
  5. Android-->获取所有联系人以及所有的字段
  6. Android(安卓)MVC框架模式的理解
  7. 在android应用中使用luasocket
  8. Android自定义进度条颜色
  9. 深入分析安卓(Android)中的注解
  10. cocos2d-x-3.1在eclipse中的环境搭建