Android控件之各种对话框详解

这里写图片描述

对话框分为:
1.消息提示对话框//AlertDialog
2.单选列表对话框//AlertDialog
3.多选列表对话框//AlertDialog
4.自定义对话框//AlertDialog
5.进度条对话框//ProgressBarDialog
6.时间选择器对话框//TimePickerDialog
7.日期选择器对话框//DatePickerDialog

1.AlertDialog.Builder类

在Android开发中,可以通过使用AlertDialog.Builder类来实现自定义的警告对话框。在使用AlertDialog.Builder类创建对话框的时候,通常需要用到以下的一些常用方法:

(1)setTitle();     //设置对话框标题 

  (2)setIcon();     //设置对话框图标 

  (3)setMessage();    //设置对话框内容 

  (4)setItems();      //设置要在对话框中显示的项目列表 

  (5)setView();      //设置自定义的对话框样式 

  (6)setSingleChoiceItems();   //设置单选列表对话框

  (7)setMultiChoiceItems();        //设置对话框显示一系列的复选框 

  (8)setPositiveButton();     //设置对话框显示一个“确定”按钮 

  (9)setNeutralButton();     //设置对话框显示一个“退出”按钮 

  (10)setNegativeButton();    //设置对话框显示一个“取消”按钮

  (11)create();     //创建一个AlertDialog对话框

  (12)show();      //显示对话框

AlertDialog具体实现的源码如下:

package com.example.alertdialog;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.DialogInterface.OnClickListener;
import android.content.DialogInterface.OnMultiChoiceClickListener;
import android.os.Bundle;
import android.view.View;
import android.widget.Toast;

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}
	
	//提示消息对话框
	public void button1(View v) {
		//要使用AlertDialog.Builder进行对话框的创建
		//也就是AlertDialog的子类进行创建
		AlertDialog.Builder alertDialog=new AlertDialog.Builder(this);
		alertDialog.setCancelable(true);//设置是否可以关闭对话框
		alertDialog.setIcon(R.drawable.ic_launcher);//设置icon
		alertDialog.setTitle("我是一个对话框");//设置标题
		alertDialog.setMessage("helloWorid");//设置信息
		//参数(("按钮标题"),("按钮点击事件"))
		alertDialog.setPositiveButton("确定",null);//设置正面按钮
		alertDialog.setNegativeButton("取消",null);//设置反面按钮
		alertDialog.setNeutralButton("关闭",null);//设置中性按钮
		alertDialog.show();
	}
	
	//单选列表对话框
	public void button2(View v) {
		//要使用AlertDialog.Builder进行对话框的创建
		//也就是AlertDialog的子类进行创建
		AlertDialog.Builder alertDialog=new AlertDialog.Builder(this);
		String[] items= {"加法","减法","乘法","除法","取余数法"};
		alertDialog.setIcon(R.drawable.ic_launcher);
		alertDialog.setTitle("测试列表对话框");
		alertDialog.setItems(items,new OnClickListener() {
			
			public void onClick(DialogInterface dialog, int which) {
				// TODO Auto-generated method stub
				Toast.makeText(getApplicationContext(), "当前选择第:"+which,1000).show();
			}
		});
		alertDialog.setPositiveButton("单选列表对话框也是可以设置按钮的", null);
		alertDialog.setNegativeButton("取消", null);
		alertDialog.setNeutralButton("关闭",null);
		alertDialog.show();
	}
	
	//多选列表对话框
		public void button3(View v) {
			//要使用AlertDialog.Builder进行对话框的创建
			//也就是AlertDialog的子类进行创建
			AlertDialog.Builder alertDialog=new AlertDialog.Builder(this);
			String[] items= {"加法","减法","乘法","除法","取余数法"};
			alertDialog.setIcon(R.drawable.ic_launcher);
			alertDialog.setTitle("测试列表对话框");
			boolean[] selectItems= {true,true,false,false,false};
			alertDialog.setMultiChoiceItems(items,selectItems, new OnMultiChoiceClickListener(){

				@Override
				public void onClick(DialogInterface dialog, int which, boolean isChecked) {
					// TODO Auto-generated method stub
					Toast.makeText(getApplicationContext(), "当前选择第:"+(which+1),1000).show();
				}
				
			}   );
			alertDialog.show();
		}
		
		//自定义列表对话框
				public void button4(View v) {
					//要使用AlertDialog.Builder进行对话框的创建
					//也就是AlertDialog的子类进行创建
					AlertDialog.Builder alertDialog=new AlertDialog.Builder(this);
					String[] items= {"加法","减法","乘法","除法","取余数法"};
					alertDialog.setIcon(R.drawable.ic_launcher);
					alertDialog.setTitle("测试列表对话框");
					boolean[] selectItems= {true,true};
					//!!!!!注意:如果自己定义对话框
					//一定要使用getLayoutInflater填充一个View视图
					//直接不然findViewbyid出来的View是不能显示出来的
					View  view=getLayoutInflater().inflate(R.layout.activity_main,null);
					alertDialog.setView(view);
					alertDialog.show();
				}
}

时间选择器对话框_TimePickerDialog 和 日期选择器对话框DatePickeDialog:

MainActivity.java

这里有一个例子:
package com.example.test;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends Activity {

	private TextView text1;
	private TextView text2;
	
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		text1=(TextView) findViewById(R.id.textView1);
		text2=(TextView) findViewById(R.id.textView2);
		
	}
	
	//设置时间
	public void button1(View v) {
		myTimePickerDialogFragment time=new myTimePickerDialogFragment();
	time.show(getFragmentManager(), "time");

	}
	
	public void setTime(int hour,int minute) {
		this.text1.setText(hour+"/"+minute);
	}
	
	//设置日期
	public void button2(View v) {
		myDatepickerDialogFragment date=new myDatepickerDialogFragment();
		date.show(getFragmentManager(),"date");
		
	}
	
	public void setDate(int year,int month,int day) {
		this.text2.setText(year+"/"+(month+1)+"/"+day);
	}
}


myTimePickerDialogFragment.java

package com.example.test;

import java.util.Calendar;

import android.app.Dialog;
import android.app.DialogFragment;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.os.Bundle;
import android.widget.TimePicker;

public class myTimePickerDialogFragment extends DialogFragment implements OnTimeSetListener {
	public MainActivity main;
	public int hour,minute;
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
	}
	
	@Override
	public Dialog onCreateDialog(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		
		Calendar c=Calendar.getInstance();
		hour=c.get(Calendar.HOUR_OF_DAY);
		minute=c.get(Calendar.MINUTE);
		
		TimePickerDialog time=new TimePickerDialog(getActivity(),this,hour, minute, true);
		
		return time;
	}
	
	@Override
	public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
		// TODO Auto-generated method stub
		main=(MainActivity) getActivity();
		main.setTime(hourOfDay, minute);
	}
	
	
}

myDatePickerDialogFragment.java

package com.example.test;

import java.util.Calendar;

import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.Dialog;
import android.app.DialogFragment;
import android.os.Bundle;
import android.widget.DatePicker;

public class myDatepickerDialogFragment extends DialogFragment implements OnDateSetListener {
	MainActivity main;
	public int year,month,day;
	
	@Override
	public void onCreate(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
	}
	
	@Override
	public Dialog onCreateDialog(Bundle savedInstanceState) {
		// TODO Auto-generated method stub
		Calendar c=Calendar.getInstance();
		year=c.get(Calendar.YEAR);
		month=c.get(Calendar.MONTH);
		day=c.get(Calendar.DAY_OF_WEEK);
		
		DatePickerDialog date=new DatePickerDialog(getActivity(), this, year, month, day);
		
		return date;
		
		
	}

	@Override
	public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
		
		main=(MainActivity) getActivity();
		main.setDate(year, monthOfYear, dayOfMonth);
		
	}
	
	
	
}

TimePickerDialog小结:

TimePickerDialog//时间选择器的实现你需要写一个自己的类:myTimePickerDialogFragment类继承DialogFragment 并实现:OnsetTimeListenrenr监听

//重谢这个类当中的:
oncreate()方法
onCreateDialog()//方法
onTimesetListener//监听方法

//

并用MainActivity类调用这个类:
myTimePickerDialogFragment my=new myTimePickerDialogFragment();
my.show();//展示Dialog

DatePickerDialog小结:

DatePickerDialog//日期选择器的实现你需要写一个自己的类:myDatePickerDialogFragment类继承DialogFragment 并实现:OnsetDateListenrenr监听

//重谢这个类当中的:
oncreate()方法
onCreateDialog()//方法
onDatesetListener//监听方法

//

并用MainActivity类调用这个类:
myDatePickerDialogFragment my=new myDatePickerDialogFragment();
my.show();//展示Dialog
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王家视频教程图书馆

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值