Andrid使用AlertDialog创建对话框

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_27384607/article/details/47133853

AlertDialog的功能很强大,它提供了一些方法来生成预定义对话框

1.带消息,带N个按钮的提示对话框

2.带列表,带N个按钮的列表对话框

3.带多个单选列表项,带N个按钮的对话框

4.带多个多选列表项,带N个按钮的对话框

除此之外,AlertDialog也可创建界面自定义的对话框


使用AlertDialog创建对话框大致按如下步揍进行

1.创建AlertDialog.Buider对象,该对象是AlertDialog的创建器

2.调用AlertDialog.Buider的方法对对话框设置图标,标题,内容等等

3.调用AlertDialog.Buider 的create()方法创建AlertDialog对话框

4.调用AlertDialog的show()方法显示对话框

下面通过几个实例来介绍AlertDialog的使用

本程序的界面比较简单,程序界面上只有一个简单的文本框和一个按钮,当用户单击按钮时会显示普通对话框,由于用户界面十分简单,故此处不再给出界面布局的代码

本程序将通过上面介绍的4步来创建AlertDialog对话框

实例一:显示提示信息的对话框

MainActivity.java代码:

package com.example.dialog;

import android.app.Activity;
import android.app.ActionBar;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Fragment;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.os.Build;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);
        Button bn = (Button)findViewById(R.id.bn01);
        final Builder builder = new AlertDialog.Builder(this);
        //为某按钮绑定事件监听器
        bn.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View source) {
				// TODO Auto-generated method stub
				//设置对话框的图标
				builder.setIcon(R.drawable.nvren);
				//设置对话框标题
				builder.setTitle("自定义对话框");
				//设置对话框显示的内容
				builder.setMessage("一个简单的对话框");
				//为按钮设置监听器
				builder.setPositiveButton("确定", new OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						EditText show = (EditText)findViewById(R.id.show);
						show.setText("用户单击了确定键");
					}
				});
                builder.setNegativeButton("取消", new OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						EditText show = (EditText)findViewById(R.id.show);
						show.setText("用户单击了取消键");
					}
				});
                builder.create().show();
				
			}
		});
        }
}

执行结果


示例二:使用AlertDialog创建列表对话框

AlertDialog.Builder除了提供setMessage方法来设置对话框所显示的消息外,还提供了如下方法来设置对话框显示的列表内容。

1.setltems(int itemsId,DialogInteface.onClickListener listener);创建普通列表对话框

2.setMultiChoice.OnMulti Choice ClickListener listener);创建多选列表对话框

3.setSingleChoiceltems(CharSequence[] items,int checkedltem,Dialoglnterface.OnClickListener listener);创建单选列表对话框

4.setAdapter(ListAdapter adapter,Dialotlnterface.OnClickListener listener);创建ListAdapter提供列表项的列表对话框。

下面通过setItems 方法来示范一个普通列表项的对话框,该程序的主界面布局也非常简单,故此处不提供界面布局文件的代码

MainActivity.java

package com.example.dialog;

import android.app.Activity;
import android.app.ActionBar;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Fragment;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.os.Build;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);
        Button bn = (Button)findViewById(R.id.bn01);
        final Builder b = new AlertDialog.Builder(this);
        //为按钮绑定监听事件
        bn.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				//设置对话框的图标
				b.setIcon(R.drawable.nvren);
				//设置对话框的标题
				b.setTitle("简单列表对话框");
				//为对话框设置多个列表
				b.setItems(new String[] {"红色","绿色","蓝色"}, new OnClickListener() {
					
					@Override
					public void onClick(DialogInterface dialog, int which) {
						// TODO Auto-generated method stub
						//该方法的which参数代表用户单击了那个列表项
						TextView show = (TextView)findViewById(R.id.show);
						switch(which) {
						case 0:
							show.setBackgroundColor(Color.RED);
							break;
						case 1:
							show.setBackgroundColor(Color.GREEN);
							break;
						case 2:
							show.setBackgroundColor(Color.BLACK);
							break;
						}
					}
				});
				b.create().show();
			}
		});
    }
}

运行结果


示例三使用AlertDialog创建单选列表对话框

只要调用AlertDialog.Buider的setSingleChoiceItems方法即可创建一个单选列表的对话框

本例将会使用另一种方式来创建对话框,采用基于Activity回调的方式来开发对话框,步揍如下:

1.重写Activity的onCreateDialog()方法,该方法返回一个对话框,该方法内部一样通过AlertDialog.Builder或DatePickerDialog等创建对话框并返回

2程序需要显示对话框调用Activity的showDialog()方法即可

本例的界面同样简单,故界面布局的代码不写了。

MainActivity.java

package com.example.dialog;

import android.app.Activity;
import android.app.ActionBar;
import android.app.AlertDialog;
import android.app.AlertDialog.Builder;
import android.app.Dialog;
import android.app.Fragment;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.os.Build;

public class MainActivity extends Activity {
	final int SINGLE_DIALOG = 0x113;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_first);
        Button bn = (Button)findViewById(R.id.bn01);
        final Builder b = new AlertDialog.Builder(this);
        bn.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				//显示对话框
				showDialog(SINGLE_DIALOG);
				
			}
		});
        //为按钮绑定监听事件
        
    }
    //重写onCreateDialog方法创建对话框
    public Dialog onCreateDialog(int id,Bundle state) {
    	switch(id) {
    	case SINGLE_DIALOG:
    		Builder b =new AlertDialog.Builder(this);
    		//设置对话框的图标
    		b.setIcon(R.drawable.nvren);
    		//设置对话框的标题
    		b.setTitle("单选列表对话框");
    		//为对话框设置多个列表
    		b.setSingleChoiceItems(new String[] {"红色","绿色","蓝色"},1,new OnClickListener() {
				
				@Override
				public void onClick(DialogInterface dialog, int which) {
					// TODO Auto-generated method stub
					
						TextView show = (TextView)findViewById(R.id.show);
						switch (which) {
						case 0:
							show.setBackgroundColor(Color.RED);
							break;
						case 1:
							show.setBackgroundColor(Color.RED);
							break;
						case 2:
							show.setBackgroundColor(Color.RED);
							break;
						}
					
				}
			});
    		b.setPositiveButton("确定",null);
    		return b.create();
    	}
    	return null;
    	
    }
}
运行结果


上面的程序重写了Activity的onCreateDialog()方法——该方法返回了一个对话框。当程序调用Activity的showDialog()方法时,onCreateDialog()方法返回的对话框将会被显示出来。运行上面的程序,单击“选择颜色”安妮雅,应用显示如上图所示。

未完待续。。。

猜你喜欢

转载自blog.csdn.net/qq_27384607/article/details/47133853
今日推荐