我们从网上一搜DatePickerDialog相关实现,大多都是默认的形式,也就是不带取消按钮。下边上我的代码:我将代码简单的封装到一个工具类里边

public static DatePickerDialog showDateDialog(Context ctx, final EditText editText)//editText是我们要显示选择日期值
{ Calendar c = Calendar.getInstance();//获取当前日期
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
final DatePickerDialog datePickerDialog = new DatePickerDialog(ctx,null,year,month,day); datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, "完成", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) { DatePicker datePicker = datePickerDialog.getDatePicker(); int year = datePicker.getYear(); int month = datePicker.getMonth(); int day = datePicker.getDayOfMonth(); StringBuilder monthBuilder = new StringBuilder();
if (month + 1 < 10) {
monthBuilder.append("0");
}
monthBuilder.append(month + 1); StringBuilder dayBuilder = new StringBuilder();
if (day < 10) {
dayBuilder.append("0");
}
dayBuilder.append(day); editText.setText(year + "-" + monthBuilder.toString() + "-" + dayBuilder.toString());//点击完成将处理好的日期值写到edittext上
}
});
datePickerDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
datePickerDialog.cancel();
}
});
datePickerDialog.getDatePicker().setCalendarViewShown(false);
return datePickerDialog;
}

我们通过setButton在dialog中加入取消按钮,并作简单的实现。

在我们选择完日期后,当我们再次打开toucher的时候,应该在日期控件中显示为选择后的时间:看代码

public static DatePickerDialog showDateDialog(Context ctx, final EditText editText)
{
int year = 0;
int month = 0;
int day = 0;

     //首次打开
if(editText.getText().toString().length()==0) {
Calendar c = Calendar.getInstance();
year = c.get(Calendar.YEAR);
month = c.get(Calendar.MONTH);
day = c.get(Calendar.DAY_OF_MONTH);
}else{//有值的情况下
String currDate = editText.getText().toString();
year = Integer.valueOf(currDate.split("-")[0].toString());
month = Integer.valueOf(currDate.split("-")[1].toString())-1;
day = Integer.valueOf(currDate.split("-")[2].toString());
} final DatePickerDialog datePickerDialog = new DatePickerDialog(ctx,null,year,month,day); datePickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, "完成", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) { DatePicker datePicker = datePickerDialog.getDatePicker(); int year = datePicker.getYear(); int month = datePicker.getMonth(); int day = datePicker.getDayOfMonth(); StringBuilder monthBuilder = new StringBuilder();
if (month + 1 < 10) {
monthBuilder.append("0");
}
monthBuilder.append(month + 1); StringBuilder dayBuilder = new StringBuilder();
if (day < 10) {
dayBuilder.append("0");
}
dayBuilder.append(day); editText.setText(year + "-" + monthBuilder.toString() + "-" + dayBuilder.toString());
}
});
datePickerDialog.setButton(DialogInterface.BUTTON_NEGATIVE, "取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
datePickerDialog.cancel();
}
});
datePickerDialog.getDatePicker().setCalendarViewShown(false);
return datePickerDialog;
}

调用方式示例:

 conditionEdit.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
if(dialog!=null && dialog.isShowing()){
return true;
}
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN)
{
conditionEdit.clearFocus();
conditionEdit.requestFocus();
}
if (motionEvent.getAction() == MotionEvent.ACTION_UP)
{
dialog = Dialog.showDateDialog(ReservationActivity.this, conditionEdit);
dialog.show();
}
return false;
}
});

android DatePickerDialog配合edittext实现按日期查询的更多相关文章

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

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

  2. Android DatepickerDialog(日期选择器)的使用

    效果图如下: 日期和时间选择对话框,首先是要获得当前时间,这里用 java类中的Calendar来获得日期和时间(也可以用Date,但是不提倡,Date部分方法已经注释为过时), Calendar是一 ...

  3. Android Studio 之 EditText

    EditText 简介 •简介 EditText是一个非常重要的组件,可以说它是用户和Android应用进行数据传输窗户: 有了它就等于有了一扇和Android应用传输的门,通过它用户可以把数据传给A ...

  4. SQLServer根据日期查询星期

    --根据日期查询星期SELECT SYSDATETIME();select datepart(weekday,getdate()); SET DATEFIRST 1select '星期'+case w ...

  5. Android开发之EditText属性详解

    1.EditText输入的文字为密码形式的设置 (1)通过.xml里设置: 把该EditText设为:android:password="true" // 以”.”形式显示文本 ( ...

  6. Android 自定义android控件EditText边框背景

    在我们进行Android应用界面设计和时候,为了界面风格的统一,我们需要对一些控件进行自定义.比如我们的应用采用的蓝色风格,但是 android的EditText控制获得焦点后显示的却是黄色的边框背景 ...

  7. Android中的EditText默认时不弹出软键盘的方法

    方法一: 在 AndroidMainfest.xml中选择哪个activity,设置windowSoftInputMode属性为 adjustUnspecified|stateHidden <a ...

  8. Android中使EditText失去焦点,edittext禁止弹出键盘[转]

    转自http://www.cnblogs.com/yejiurui/archive/2013/01/02/2841945.html 在我们的应用中,有时候一进入一个页面, EditText默认就会自动 ...

  9. android代码集EditText只要输入号码、信

     如何设置EditText,因此,只有某些数字或字母可以进入它? 一.建立EditText,只要输入号码: 办法1:直接生成DigitsKeyListener了. et_1.setKeyListe ...

随机推荐

  1. MFC的杂七杂八

    1.判断焦点当前所在控件 2.动态移动控件位置 3.GDI+绘制文字 4.编辑框跳变显示 5.最大化显示 6.Uint uFormat常用值 7.获取菜单个数 8.添加气泡提示 9.编辑框输入时响应函 ...

  2. 磁盘IO单线程顺序写时最快的,如果多线程写,磁盘的磁头要不断重新寻址,所以写入速度反而会慢

    (1) 读写最好还是不要多线程,硬盘读写的速度有限,单线程时已经满负荷了,多线程又会增加线程之间的切换,会增加时间. 如果想增加读写速度,应该增加硬盘,做raid (2)首先是硬盘的写入是串行的,CP ...

  3. c# 可变性解析(协变和逆变)

    之所以会想写关于协变和逆变的知识点,主要是因为在泛型委托中提到了这个知识点. 1.什么是可变性 可变性是.NET4.0中的一个特性,可变形分为:协变性,逆变性,不可变性. 2.在.NET4.0出来之前 ...

  4. lession2:使用HTTP Cookie 管理器来传递cookies值

    在实际进行压力测试的时候,经常会出现使用cookie传递值的情况,此时就需要使用[HTTP Cookie 管理器]来传递cookie值. 1.参照lession1中,创建线程组.sampler及聚合报 ...

  5. [原创作品]一个实用的js倒计时器 postby:zhutty.cnblogs.com

    今天做了一个手机短信发送倒计时,额,就是每隔多长时间可以重新发送的功能.贡献出来给园有吐槽点评. //倒计时,time:时长(秒),scb:每秒回调,cb:计时完成回调 var timing = fu ...

  6. Apache HttpComponents Client 4.0快速入门/升级-2.POST方法访问网页

    Apache HttpComponents Client 4.0已经发布多时,httpclient项目从commons子项目挪到了HttpComponents子项目下,httpclient3.1和 h ...

  7. 【实验 1-1】编写一个简单的 TCP 服务器和 TCP 客户端程序。程序均为控制台程序窗口。

    在新建的 C++源文件中编写如下代码. 1.TCP 服务器端#include<winsock2.h> //包含头文件#include<stdio.h>#include<w ...

  8. 获取布局 ActionBar

    LayoutInflater inflater = getLayoutInflater();View imageLayout = inflater.inflate(R.layout.preferenc ...

  9. 初学Pexpect

    概述 Pexpect 是 Don Libes 的 Expect 语言的一个 Python 实现,是一个用来启动子程序,并使用正则表达式对程序输出做出特定响应,以此实现与其自动交互的 Python 模块 ...

  10. SQL 2008 R2 数据库镜像操作

    镜像操作请参考:http://blog.csdn.net/dba_huangzj/article/details/35995083 应用程序数据库连接字符串(带见证服务器即自动故障转移): DBHel ...