我们从网上一搜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. ural 1215 Exactness of Projectile Hit

    #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> # ...

  2. 常见MYSQL导入导出数据命令

    导出数据库: mysqldump –uuser -ppassword -hhost databasename > target_20150225.sql 打包: tar zcvf target_ ...

  3. live555的编译及使用

    live555是个流媒体C++开源库,VLC的Meida Player就使用了它的API完成的RTSP客户端,由于VLC的SDK没有提供相关record流到视频文件的API,所以我想用过live555 ...

  4. MPlayer播放器安装

    http://www.mplayerhq.hu/MPlayer/releases/MPlayer-1.1.1.tar.xz [tim@L MPlayer-1.1.1]$ mplayer         ...

  5. uniq 命令

    uniq 命令 文字 uniq是LINUX命令 用途 报告或删除文件中重复的行. 语法 uniq [ -c | -d | -u ] [ -f Fields ] [ -s Characters ] [ ...

  6. HDU 3262 Seat taking up is tough (模拟搜索)

    传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3262 题意:教室有n*m个座位,每个座位有一个舒适值,有K个学生在不同时间段进来,要占t个座位,必须是连 ...

  7. Java继承与清理

    [程序实例] import java.util.*; class Characteristic { private String s; Characteristic(String s) { this. ...

  8. jq指定行切换

    function G(){ var item=$('.req_list_item>li'); item.find($('.req_show')).hover(function(){ $(this ...

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

    1.服务器 #include<winsock2.h> //包含头文件#include<stdio.h>#include<windows.h>#pragma comm ...

  10. android 分辨率自适应

    1.术语和概念 术语 说明 备注 Screen size(屏幕尺寸) 指的是手机实际的物理尺寸,比如常用的2.8英寸,3.2英寸,3.5英寸,3.7英寸 摩托罗拉milestone手机是3.7英寸 A ...