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

设置日期对话框在手机经常用到,今天来学习下。

首先设置好布局文件:如图

xml对应代码

 1 <?xml version="1.0" encoding="utf-8"?>
 2 <LinearLayout
 3     android:id="@+id/LinearLayout01"
 4     android:layout_width="fill_parent"
 5     android:layout_height="fill_parent"
 6     android:orientation="vertical"
 7     xmlns:android="http://schemas.android.com/apk/res/android">
 8
 9     <EditText
10         android:id="@+id/edit1"
11         android:layout_width="match_parent"
12         android:layout_height="wrap_content"
13         android:editable="false"/>
14
15     <Button
16         android:id="@+id/btnDate"
17         android:layout_width="match_parent"
18         android:layout_height="wrap_content"
19         android:text="日期对话框"/>
20     <Button
21         android:id="@+id/btnTime"
22         android:layout_width="match_parent"
23         android:layout_height="wrap_content"
24         android:text="时间对话框"/>
25
26     <DigitalClock
27         android:id="@+id/digitalClock1"
28         android:gravity="center"
29         android:layout_width="match_parent"
30         android:layout_height="wrap_content"
31         android:text="DigitalClock" />
32
33     <AnalogClock
34         android:id="@+id/analogClock1"
35         android:gravity="center"
36         android:layout_width="match_parent"
37         android:layout_height="wrap_content" />
38
39 </LinearLayout>

注意:EditText里面android:editable="false"这句作用是让编辑框处于不可编辑状态

接下来我们修改下MainActivity.java代码,如下:

  1 package com.example.datepickerdialog;
  2
  3 import java.util.Calendar;
  4
  5 import android.app.Activity;
  6 import android.app.DatePickerDialog;
  7 import android.app.Dialog;
  8 import android.app.TimePickerDialog;
  9 import android.os.Bundle;
 10 import android.view.Menu;
 11 import android.view.MenuItem;
 12 import android.view.View;
 13 import android.widget.Button;
 14 import android.widget.DatePicker;
 15 import android.widget.EditText;
 16 import android.widget.TimePicker;
 17
 18 public class MainActivity extends Activity {
 19
 20     private EditText m_edit = null;
 21     private Button m_btnDate = null;
 22     private Button m_btnTime = null;
 23     private final static int DIALOG_DATE = 0;
 24     private final static int DIALOG_TIME = 1;
 25     private Calendar c = null;
 26
 27     @Override
 28     protected void onCreate(Bundle savedInstanceState) {
 29         super.onCreate(savedInstanceState);
 30         setContentView(R.layout.activity_main);
 31
 32         m_edit = (EditText)findViewById(R.id.edit1);
 33         m_btnDate = (Button)findViewById(R.id.btnDate);
 34         m_btnTime = (Button)findViewById(R.id.btnTime);
 35
 36         m_btnDate.setOnClickListener(new View.OnClickListener() {
 37
 38             @Override
 39             public void onClick(View v) {
 40                  showDialog(DIALOG_DATE);
 41             }
 42         });
 43
 44         m_btnTime.setOnClickListener(new View.OnClickListener() {
 45
 46             @Override
 47             public void onClick(View v) {
 48                 showDialog(DIALOG_TIME);
 49             }
 50         });
 51     }
 52
 53     protected Dialog onCreateDialog(int id){
 54
 55         Dialog dialog = null;
 56         switch(id){
 57
 58         case DIALOG_DATE:
 59             c = Calendar.getInstance();
 60              dialog = new DatePickerDialog(this,new DatePickerDialog.OnDateSetListener() {
 61                  public void onDateSet(DatePicker dp, int year,int month, int dayOfMonth) {
 62                      m_edit.setText("您选择了:" + year + "年" + (month+1) + "月" + dayOfMonth + "日");
 63                  }
 64              }, c.get(Calendar.YEAR), // 传入年份
 65              c.get(Calendar.MONTH), // 传入月份
 66              c.get(Calendar.DAY_OF_MONTH) // 传入天数
 67              );
 68             break;
 69
 70         case DIALOG_TIME:
 71             c=Calendar.getInstance();
 72             dialog=new TimePickerDialog(this,new TimePickerDialog.OnTimeSetListener(){
 73                 public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
 74                     m_edit.setText("您选择了:"+hourOfDay+"时"+minute+"分");
 75                 }
 76             },
 77             c.get(Calendar.HOUR_OF_DAY),  //小时
 78             c.get(Calendar.MINUTE),       //分钟
 79             false
 80             );
 81             break;
 82         }
 83         return dialog;
 84     }
 85
 86
 87     @Override
 88     public boolean onCreateOptionsMenu(Menu menu) {
 89         // Inflate the menu; this adds items to the action bar if it is present.
 90         getMenuInflater().inflate(R.menu.main, menu);
 91         return true;
 92     }
 93
 94     @Override
 95     public boolean onOptionsItemSelected(MenuItem item) {
 96         // Handle action bar item clicks here. The action bar will
 97         // automatically handle clicks on the Home/Up button, so long
 98         // as you specify a parent activity in AndroidManifest.xml.
 99         int id = item.getItemId();
100         if (id == R.id.action_settings) {
101             return true;
102         }
103         return super.onOptionsItemSelected(item);
104     }
105 }

提示:在这里我犯了一个小错误,就是重写onCreateDialog函数时我错写成OnCreateDialog,结果运行程序,点击日期和时间对话框都没有效果显示,所以大家在写代码时要注意这些细节。

最后运行效果:

       

      

时间: 12-24

9.Android之日期对话框DatePicker控件学习的相关文章

Android开发之DatePicker控件与TimePicker控件

DatePicker控件继承自FrameLayout类,日期选择控件的主要功能是向用户提供包含年.月.日的日期数据并允许用户对其修改. TimePicker控件继承自FrameLayout类,向用户显示一天中的时间,允许用户对其进行修改. DatePicker控件的方法: 1.init() 初始化DatePicker日期选择控件,设置初始显示的年份.月份.日数,设置日期更改监听器.其中有一个monthOfYear参数为初始月份,实际显示的月份是此处设置的值加1. 2.OnDateChangedL

DatePicker日期与时间控件

DatePicker日期与时间控件 一.简介 二.方法 三.代码实例 四.收获

AngularJS下使用Kendo的DatePicker控件日期有时不显示

在AngularJS下使用Kendo的DatePicker控件时,在k-ng-model绑定了日期对象,但是页面在显示时,有时控件显示空白,但是有时又正常,具有一定随机性,在stackoverflow中也没找到类似状况和解决方法,经过分析跟踪后,确认问题是DatePicker控件的问题,控件说明文档中所述ng-model和k-ng-model是有区别的: The first is to demonstrate the difference between ng-model="dateString

[android] 解决DatePickerDialog和TimePickerDialog控件取消按钮问题

一. 问题提出 在Android程序中,我们通常需要使用DatePicker来设置日期,TimePicker来设置时间.其基本步骤是: 1.先定义DatePicker和TimePicker布局 2.然后通过Calendar类获得系统时间 3.接着通过init方法将日期传递给DatePicker初始化日期控件 4.在响应点击事件中可以通过DatePicker的getYear().getDayOfMonth().getMonth()函数获取具体日期 同时可以在OnDateChangedListene

iOS开发-DatePicker控件

时间控件不管是Android还是iOS中都是必然存在的一个控件,具体的效果大同小异,显示日期,时间,iOS中有四种方式可以选择,Time, Date,Date and Time  , Count Down Timer,Demo比较简单,需要一个DatePicker控件和一个Button显示时间或者日期,具体实现如下: 页面布局 Main.storyboard布局: Y 效果: 代码实现 首先将控件拖入ViewController.h中,将Button的点击拖入ViewController.m中:

带农历日历的DatePicker控件!Xamarin控件开发小记

原文:带农历日历的DatePicker控件!Xamarin控件开发小记 闲来无事开发了个日期选择控件,感兴趣的同学前往: https://github.com/MatoApps/Mato.DatePicker Mato.DatePicker 说明 这是一个带有农历日历的日期选择Xamarin控件 可以指定初始日期 多选和单选日期 引用 PCL:https://www.nuget.org/packages/Mato.DatePicker.PCL/ Android:https://www.nuget

【转】MFC对话框和控件

原文网址:http://www.cnblogs.com/tiwlin/archive/2013/05/08/3067966.html 对话框和控件 对话框是Windows应用程序中一种常用的资源,其主要功能是输出信息和接收用户的输入数据.控件是嵌入在对话框中或其它父窗口中的一个特殊的小窗口,它用于完成不同的输入.输出功能.对话框与控件关系密切,在每个对话框上一般都有一些控件,对话框依靠这些控件与用户进行信息的交互. 在MFC中,对话框的功能被封装在CDialog类中,而CDialog类是CWnd

【Android 初学】3、控件布局初步

什么是控件布局 所谓的控件布局方法,就是指控制控件在Activity当中的位置.大小.颜色以及其他控件样式属性的方法. 控件的布局,在android中,有两种方法: 1.使用布局文件完成控件布局(相对简单) 2.在Java代码中完成控件布局(动态布局.更灵活.也相对复杂) 布局方法分类 1.Linear Layout(最容易掌握) 线性布局:可以纵向布局.也可以横向布局. 2.Ralative Layout(最常用使用.熟悉WEB开发的人就很熟悉) 3.ListView 4.Grid View

VB6.0中,日期、时间控件不允许为空时,采用文本框与日期、时间控件相互替换赋值(解决方案)

VB6.0中,日期.时间控件不允许为空时,采用文本框与日期.时间控件相互替换赋值,或许是一个不错的选择. 实现效果如下图: 代码如下: 文本框txtStopTime1 时间框DTStopTime1 格式3 - dtpCustom  HH:mm:ss Private Sub Form_Load()       txtStopTime1.ZOrder       DTStopTime1.Top = txtStopTime1.Top       DTStopTime1.Left = txtStopTi