转载请备注出自于:http://blog.csdn.net/qq_22118507/article/details/51524086
1.AlertDialog对话框
AlertDialog的构造方法全部是Protected的,所以不能直接通过new一个AlertDialog来创建出一个AlertDialog。要创建一个AlertDialog,就要用到AlertDialog.Builder中的create()方法。
使用AlertDialog.Builder创建对话框需要了解以下几个方法:
setTitle
:为对话框设置标题
setIcon
:为对话框设置图标
setMessage
:为对话框设置内容
setView
: 给对话框设置自定义样式
setItems
:设置对话框要显示的一个list,一般用于显示几个命令时
setMultiChoiceItems
:用来设置对话框显示一系列的复选框
setNeutralButton
:普通按钮
setPositiveButton
:给对话框添加"Yes"按钮
setNegativeButton
:对话框添加"No"按钮
create
: 创建对话框
show
:显示对话框
(1)普通框
AlertDialog.Builder builder = new AlertDialog.Builder(MainDialog.this);
- builder.setIcon(R.drawable.icon);
- builder.setTitle("投票");
- builder.setMessage("您认为什么样的内容能吸引您?");
- builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- }
- });
- builder.setNeutralButton("忽略", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- }
- });
- builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- }
- });
- builder.create().show();
这个数组用于列表选择
- final String[] mItems = {"项目1","项目2","项目3","项目4","项目5","项目6","项目7"};
- AlertDialog.Builder builder = new AlertDialog.Builder(MainDialog.this);
- builder.setTitle("列表选择框");
- builder.setItems(mItems, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int which) {
- //点击后弹出窗口选择了第几项
- }
- });
- builder.create().show();
mSingleChoice 用于记录单选中的ID
- final String[] mItems = {"item0","item1","itme2","item3","itme4","item5","item6"};
- AlertDialog.Builder builder = new AlertDialog.Builder(MainDialog.this);
- mSingleChoiceID = -1;
- builder.setIcon(R.drawable.icon);
- builder.setTitle("单项选择");
- builder.setSingleChoiceItems(mItems, 0, new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- mSingleChoiceID = whichButton;
- }
- });
- builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- if(mSingleChoiceID > 0) {
- }
- }
- });
- builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- }
- });
- builder.create().show();
MultiChoiceID 用于记录多选选中的id号 存在ArrayList中
选中后 add 进ArrayList
取消选中后 remove 出ArrayList。
- ArrayList <Integer>MultiChoiceID = new ArrayList <Integer>();
- AlertDialog.Builder builder = new AlertDialog.Builder(MainDialog.this);
- MultiChoiceID.clear();
- builder.setIcon(R.drawable.icon);
- builder.setTitle("多项选择");
- builder.setMultiChoiceItems(mItems,
- new boolean[]{false, false, false, false, false, false, false},
- new DialogInterface.OnMultiChoiceClickListener() {
- public void onClick(DialogInterface dialog, int whichButton,
- boolean isChecked) {
- if(isChecked) {
- MultiChoiceID.add(whichButton);
- showDialog("你选择的id为" + whichButton + " , " + mItems[whichButton]);
- }else {
- MultiChoiceID.remove(whichButton);
- }
- }
- });
- builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- String str = "";
- int size = MultiChoiceID.size();
- for (int i = 0 ;i < size; i++) {
- str+= mItems[MultiChoiceID.get(i)] + ", ";
- }
- showDialog("你选择的是" + str);
- }
- });
- builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- }
- });
- builder.create().show();
- AlertDialog.Builder builder = new AlertDialog.Builder(MainDialog.this);
- LayoutInflater factory = LayoutInflater.from(this);
- final View textEntryView = factory.inflate(R.layout.test, null);
- builder.setIcon(R.drawable.icon);
- builder.setTitle("自定义输入框");
- builder.setView(textEntryView);
- builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- EditText userName = (EditText) textEntryView.findViewById(R.id.etUserName);
- EditText password = (EditText) textEntryView.findViewById(R.id.etPassWord);
- showDialog("姓名 :" + userName.getText().toString() + "密码:" + password.getText().toString() );
- }
- });
- builder.setNegativeButton("取消", new DialogInterface.OnClickListener() {
- public void onClick(DialogInterface dialog, int whichButton) {
- }
- });
- builder.create().show();
test.xml布局文件:
-
- <?xml version="1.0" encoding="utf-8"?>
- <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:orientation="horizontal"
- android:id="@+id/dialog">
- <LinearLayout
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:orientation="horizontal"
- android:id="@+id/dialogname">
- <TextView android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:id="@+id/tvUserName"
- android:text="姓名:" />
- <EditText android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:id="@+id/etUserName"
- android:minWidth="200dip"/>
- </LinearLayout>
- <LinearLayout
- android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:orientation="horizontal"
- android:id="@+id/dialognum"
- android:layout_below="@+id/dialogname"
- >
- <TextView android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:id="@+id/tvPassWord"
- android:text="密码:" />
- <EditText android:layout_height="wrap_content"
- android:layout_width="wrap_content"
- android:id="@+id/etPassWord"
- android:minWidth="200dip"/>
- </LinearLayout>
- </RelativeLayout>
layout中datepickerdialog.xml代码如下:
- <?xml version="1.0" encoding="utf-8"?>
- <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
- android:layout_width="match_parent"
- android:layout_height="match_parent"
- android:orientation="vertical"
- android:background="#ffffffff"
- >
- <TextView
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:id="@+id/showtime"
- android:textColor="#ff000000"
- android:text=""
- />
- <Button
- android:layout_width="wrap_content"
- android:layout_height="wrap_content"
- android:id="@+id/setdate"
- android:text="@string/setdate"
- />
其activity实现如下:
- package com.example.testview;
-
- import java.util.Calendar;
- import java.util.Date;
- import java.util.Locale;
-
- import android.app.Activity;
- import android.os.Bundle;
- import android.widget.Button;
- import android.widget.DatePicker;
- import android.widget.TextView;
- import android.view.View;
- import android.view.View.OnClickListener;
- import android.app.DatePickerDialog;
-
- /**
- *
- * DatePickerDialog是设置日期对话框,通过OnDateSetListener监听并重新设置日期,
- * 当日期被重置后,会执行OnDateSetLintener类中的方法onDateSet()
- *
- */
-
-
- public class DatePickerDialogExample extends Activity {
-
- private TextView showdate;
- private Button setdate;
- private int year;
- private int month;
- private int day;
-
-
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.datepickerdialog);
-
- showdate=(TextView) this.findViewById(R.id.showtime);
- setdate=(Button) this.findViewById(R.id.setdate);
- //初始化Calendar日历对象
- Calendar mycalendar=Calendar.getInstance(Locale.CHINA);
- Date mydate=new Date(); //获取当前日期Date对象
- mycalendar.setTime(mydate);为Calendar对象设置时间为当前日期
-
- year=mycalendar.get(Calendar.YEAR); //获取Calendar对象中的年
- month=mycalendar.get(Calendar.MONTH);//获取Calendar对象中的月
- day=mycalendar.get(Calendar.DAY_OF_MONTH);//获取这个月的第几天
- showdate.setText("当前日期:"+year+"-"+(month+1)+"-"+day); //显示当前的年月日
-
- //添加单击事件--设置日期
- setdate.setOnClickListener(new OnClickListener(){
-
- @Override
- public void onClick(View v)
- {
- /**
- * 构造函数原型:
- * public DatePickerDialog (Context context, DatePickerDialog.OnDateSetListener callBack,
- * int year, int monthOfYear, int dayOfMonth)
- * content组件运行Activity,
- * DatePickerDialog.OnDateSetListener:选择日期事件
- * year:当前组件上显示的年,monthOfYear:当前组件上显示的月,dayOfMonth:当前组件上显示的第几天
- *
- */
- //创建DatePickerDialog对象
- DatePickerDialog dpd=new DatePickerDialog(DatePickerDialogExample.this,Datelistener,year,month,day);
- dpd.show();//显示DatePickerDialog组件
- }
- });
-
- }
- private DatePickerDialog.OnDateSetListener Datelistener=new DatePickerDialog.OnDateSetListener()
- {
- /**params:view:该事件关联的组件
- * params:myyear:当前选择的年
- * params:monthOfYear:当前选择的月
- * params:dayOfMonth:当前选择的日
- */
- @Override
- public void onDateSet(DatePicker view, int myyear, int monthOfYear,int dayOfMonth) {
-
-
- //修改year、month、day的变量值,以便以后单击按钮时,DatePickerDialog上显示上一次修改后的值
- year=myyear;
- month=monthOfYear;
- day=dayOfMonth;
- //更新日期
- updateDate();
-
- }
- //当DatePickerDialog关闭时,更新日期显示
- private void updateDate()
- {
- //在TextView上显示日期
- showdate.setText("当前日期:"+year+"-"+(month+1)+"-"+day);
- }
- };
-
-
- }
3.自定义对话框
public SelectDialog(Context context, int theme) {
super(context, theme);
}
public SelectDialog(Context context) {
super(context);
}
public setContentView(int view) {
setContentView(int view);
}
}