效果图如下:

日期和时间选择对话框,首先是要获得当前时间,这里用 java类中的Calendar来获得日期和时间(也可以用Date,但是不提倡,Date部分方法已经注释为过时), Calendar是一个抽象类,是通过getInstance()来获得实例

日期和时间选择对话框无需在像前面一样借组与AlertDialog.Builder来作为内容的载体,有直接的Dialog,其实源码里面已经包括了Builder。

1、DatePickerDialog 是日期Dialog,如下建立

dialog = new DatePickerDialog(this,
dateListener,
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH));

this 表示当前 Acitivity,表示这是当前Acitivity的对话框

dateListener为产生日期事件的监听器,这里是通过DatePickerDialog.OnDateSetListener来获得,代码如下

DatePickerDialog.OnDateSetListener dateListener =
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker,
int year, int month, int dayOfMonth) {
EditText editText =
(EditText) findViewById(R.id.editText);
//Calendar月份是从0开始,所以month要加1
editText.setText("你选择了" + year + "年" +
(month+1) + "月" + dayOfMonth + "日");
}
};

这里注意的是calendar.getCalendar(Calendar.MONTH), Calendar类中是从0开始取月份的,但是这里DatePickerDialog已经做了处理。

2、TimePickerDialog为时间选择对话框,实现代码如下:

dialog = new TimePickerDialog(this, timeListener,
calendar.get(Calendar.HOUR_OF_DAY),
calendar.get(Calendar.MINUTE),
false); //是否为二十四制

timeListener 是一个TimePickerDialog.OnTimeSetListener 实例。

-------------------------------------------------------------------------------------------------------------------------

这是日期选择对话框                                                                        这是时间选择对话框

实现步骤:

第一步:一个用来显示选择的内容的输入框和两个用来显示日期和时间的按钮

res/layout/date_time_dialog_layout.xml

[xhtml] <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<EditText android:id="@+id/editText"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:editable="false"
android:cursorVisible="false"/>
<Button android:id="@+id/btnDate"
android:text="显示日期选择对话框"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
<Button android:id="@+id/btnTime"
android:text="显示时间选择对话框"
android:layout_width="fill_parent"
android:layout_height="wrap_content" />
</LinearLayout>

第二步:

在DateTimeDialogActivity的OnCreate方法里面要对两个button进行单击事件处理,OnCreateDialog来处理产生对话框

src/com/dialog/activity/DateTimeDialogActivity.java

[java] package com.dialog.activity; 

import java.util.Calendar; 

import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.Dialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.EditText;
import android.widget.TimePicker; public class DateTimeDialogActivity extends Activity { private final int DATE_DIALOG = 1; private final int TIME_DIALOG = 2;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.date_time_dialog_layout); View.OnClickListener dateBtnListener =
new BtnOnClickListener(DATE_DIALOG); Button btnDate = (Button) findViewById(R.id.btnDate);
btnDate.setOnClickListener(dateBtnListener); View.OnClickListener timeBtnListener =
new BtnOnClickListener(TIME_DIALOG);
Button btnTime = (Button) findViewById(R.id.btnTime);
btnTime.setOnClickListener(timeBtnListener);
} protected Dialog onCreateDialog(int id) {
//用来获取日期和时间的
Calendar calendar = Calendar.getInstance(); Dialog dialog = null;
switch(id) {
case DATE_DIALOG:
DatePickerDialog.OnDateSetListener dateListener =
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker datePicker,
int year, int month, int dayOfMonth) {
EditText editText =
(EditText) findViewById(R.id.editText);
//Calendar月份是从0开始,所以month要加1
editText.setText("你选择了" + year + "年" +
(month+1) + "月" + dayOfMonth + "日");
}
};
dialog = new DatePickerDialog(this,
dateListener,
calendar.get(Calendar.YEAR),
calendar.get(Calendar.MONTH),
calendar.get(Calendar.DAY_OF_MONTH));
break;
case TIME_DIALOG:
TimePickerDialog.OnTimeSetListener timeListener =
new TimePickerDialog.OnTimeSetListener() { @Override
public void onTimeSet(TimePicker timerPicker,
int hourOfDay, int minute) {
EditText editText =
(EditText) findViewById(R.id.editText);
editText.setText("你选择了" + hourOfDay + "时" +
minute + "分");
}
};
dialog = new TimePickerDialog(this, timeListener,
calendar.get(Calendar.HOUR_OF_DAY),
calendar.get(Calendar.MINUTE),
false); //是否为二十四制
break;
default:
break;
}
return dialog;
}
/*
* 成员内部类,此处为提高可重用性,也可以换成匿名内部类
*/
private class BtnOnClickListener implements View.OnClickListener { private int dialogId = 0; //默认为0则不显示对话框 public BtnOnClickListener(int dialogId) {
this.dialogId = dialogId;
}
@Override
public void onClick(View view) {
showDialog(dialogId);
} }
}

Android DatepickerDialog(日期选择器)的使用的更多相关文章

  1. Android的日期选择器

    TimePicker(时间选择器) 方法 描述 Integer getCurrentHour () 返回当前设置的小时 Integer getCurrentMinute() 返回当前设置的分钟 boo ...

  2. Android中的时间日期选择器

    1.layout <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xml ...

  3. Android开发UI之EditText+DatePicker带日期选择器的编辑框

    1. 声明EditText变量,并关联到相应控件上 private EditText sellStartTime; private EditText sellEndTime; sellStartTim ...

  4. $Android中日期和时间选择器的实现

    创建日期或时间选择窗口需要弹出Dialog的时候,Activity类的showDialog方法已经弃用了,而推荐使用的是DialogFragment,本文总结一下其具体用法. (一)日期选择器 1.创 ...

  5. Android自己定义DataTimePicker(日期选择器)

    Android自己定义DataTimePicker(日期选择器)  笔者有一段时间没有发表关于Android的文章了,关于Android自己定义组件笔者有好几篇想跟大家分享的,后期会记录在博客中.本篇 ...

  6. Android零基础入门第57节:日期选择器DatePicker和时间选择器TimePicker

    原文:Android零基础入门第57节:日期选择器DatePicker和时间选择器TimePicker 在实际开发中,经常会遇见一些时间选择器.日期选择器.数字选择器等需求,那么从本期开始来学习And ...

  7. Android中DatePicker日期选择器的使用和获取选择的年月日

    场景 实现效果如下 注: 博客: https://blog.csdn.net/badao_liumang_qizhi 关注公众号 霸道的程序猿 获取编程相关电子书.教程推送与免费下载. 实现 将布局改 ...

  8. android 开发 时间选择器TimePicker的使用

    android系统自带时间控件:DatePicker 日期显示控件 DatePickerDialog 日期对话框控件TimePicker 时间显示控件 TimePickerDialog 时间对话框控件 ...

  9. Android课程---日历选择器和时间选择器

    package com.hanqi.test5; import android.os.Bundle; import android.support.annotation.IdRes; import a ...

  10. 9.Android之日期对话框DatePicker控件学习

    设置日期对话框在手机经常用到,今天来学习下. 首先设置好布局文件:如图 xml对应代码 <?xml version="1.0" encoding="utf-8&qu ...

随机推荐

  1. java-jsp与servlet

    Java Servlet 是运行在带有支持 Java Servlet 规范的解释器的 web 服务器上的 Java 类. 每次服务器接收到一个 Servlet 请求时,服务器会产生一个新的线程并调用服 ...

  2. Qt 事件处理的五个层次

    看了这篇文章(见http://devbean.blog.51cto.com/448512/231861),然后经过自己的思考,把Qt事件处理的五个层次.同时也是Qt时间处理的流程画了出来.若有不对请批 ...

  3. hbase权威指南阅读随手笔记二之过滤器

    转自:http://blog.csdn.net/saint1126/article/details/8257941 base过滤器的比较操作符:   LESS  <LESS_OR_EQUAL & ...

  4. ubuntu开启SSH服务远程登录

    http://blog.csdn.net/jackghq/article/details/54974141 ubuntu开启SSH服务远程登录

  5. 科技发烧友之单反佳能700d中高端

    http://detail.zol.com.cn/series/15/15795_1.html 前三 佳能 尼康 索尼 佳能5d 1.6w 佳能70d 5k 佳能6d 9k 佳能d7100 5k 尼康 ...

  6. (转)windows下编译最新的x264

    二:<windows下编译最新的x264> X264更新的比较快,每天都有更新,但算法模块,基本结构是没有多大变化的.x264都是用C语言写的包括C99,但C99语法是在VC中是没法用的( ...

  7. opencv实例二:缩放一张图片

    1.知识补充 const char*, char const*, char*const的区别 事实上这个概念谁都有只是三种声明方式非常相似: Bjarne在他的The C++ Programming ...

  8. asp.net mvc清空指定cookies

    HttpCookie hc = Request.Cookies["user"];                hc.Expires = DateTime.Now.AddDays( ...

  9. 【Java面试题】55 说说&和&&的区别。

    &和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false. ...

  10. 码农小汪-Hibernate学习8-hibernate关联关系注解表示@OneToMany mappedBy @ManyToMany @JoinTable

    近期我也是有点郁闷,究竟是程序中处理关联关系.还是直接使用外键处理关联关系呢?这个的说法不一致!程序中处理这样的关联关系的话.自己去维护这样的约束.这样的非常乐观的一种做法!或者是直接在数据库中处理这 ...