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

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

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. @Override
  87. public boolean onCreateOptionsMenu(Menu menu) {
  88. // Inflate the menu; this adds items to the action bar if it is present.
  89. getMenuInflater().inflate(R.menu.main, menu);
  90. return true;
  91. }
  92.  
  93. @Override
  94. public boolean onOptionsItemSelected(MenuItem item) {
  95. // Handle action bar item clicks here. The action bar will
  96. // automatically handle clicks on the Home/Up button, so long
  97. // as you specify a parent activity in AndroidManifest.xml.
  98. int id = item.getItemId();
  99. if (id == R.id.action_settings) {
  100. return true;
  101. }
  102. return super.onOptionsItemSelected(item);
  103. }
  104. }

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

最后运行效果:

       

      

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

  1. Flutter 日期时间DatePicker控件及国际化

    注意:无特殊说明,Flutter版本及Dart版本如下: Flutter版本: 1.12.13+hotfix.5 Dart版本: 2.7.0 DatePicker Flutter并没有DatePick ...

  2. 8.Android之日期DatePicker和时间TimeTicker控件学习

    手机设置时间日期很普遍,今天就梳理下. 首先在拖入一个按钮 ,日期和时间控件到工程里,如图: 代码如下: <?xml version="1.0" encoding=" ...

  3. DatePicker日期与时间控件

    DatePicker日期与时间控件 一.简介 二.方法 最日常的使用方法了 日期控件DatePicker 时间控件TimePicker 月份从0开始 三.代码实例 效果图: 代码: fry.Activ ...

  4. iOS开发-DatePicker控件

    时间控件不管是Android还是iOS中都是必然存在的一个控件,具体的效果大同小异,显示日期,时间,iOS中有四种方式可以选择,Time, Date,Date and Time  , Count Do ...

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

    原文:带农历日历的DatePicker控件!Xamarin控件开发小记 闲来无事开发了个日期选择控件,感兴趣的同学前往: https://github.com/MatoApps/Mato.DatePi ...

  6. Android布局属性与常用控件

    一.Android常用布局属性 1. LinearLayout的特有属性 android:orientation:设置布局排列方式   android:layout_weight:设置所占布局的权重  ...

  7. Android开发中目前流行控件和知识点总结

    Android开发中目前流行控件和知识点总结   1.SlidingMenu 滑动菜单 应用案例:Facebook . Path 2.0 .人人.网易新闻 下载地址: https://github.c ...

  8. Android自动化测试中AccessibilityService获取控件信息(2)-三种方式对比

    Android自动化测试中AccessibilityService获取控件信息(2)-三种方式对比   上一篇文章: Android自动化测试中AccessibilityService获取控件信息(1 ...

  9. Android开源的精美日历控件,热插拔设计的万能自定义UI

    Android开源的精美日历控件,热插拔设计的万能自定义UI UI框架应该逻辑与界面实现分离,该日历控件使用了热插拔的设计 ,简单几步即可实现你需要的UI效果,热插拔的思想是你提供你的实现,我提供我的 ...

随机推荐

  1. [cb] Unity Editor 添加右键菜单

    需求 为Unity的Editor窗口添加右键菜单 实现代码 // This example shows how to create a context menu inside a custom Edi ...

  2. unix基本命令日记

    鉴于命令经常忘记,网站文章鱼龙混杂,很多不适合自己,现在记录方便自己查看.每个人的基础不同,需要合适的文章也不一样. 用户管理 useradd 功能说明:建立用户帐号. 语 法:useradd [-m ...

  3. Linux环境安装Jenkins

    安装环境: CenOS 6.4 JDK_1.6.0_23 一.安装前检查环境 检查是否安装JDK: java --version 二.安装Jenkins 1. 添加Jenkins的源(reposito ...

  4. Android签名机制:生成keystore、签名、查看签名信息

    转自:http://www.ourunix.org/post/146.html

  5. Git 详解

    1. Git 1.1. Git是何方神圣? Git是用C语言开发的分布版本控制系统.版本控制系统可以保留一个文件集合的历史记录,并能回滚文件集合到另一个状态(历史记录状态).另一个状 态可以是不同的文 ...

  6. iOS宏定义

    1.__OBJC__宏定义作用 在.pch 文件中一般都会自动加上这句宏定义,表示宏内引用的文件确保只被使用Objective-C语言的文件所引用,保证引用关系的清晰.因为在一个OC工程中,可能包含. ...

  7. PHP 运行方式(PHP SAPI介绍)

    SAPI:Server Application Programming Interface 服务器端应用编程端口.它就是PHP与其它应用交互的接口,PHP脚本要执行有很多种方式,通过Web服务器,或者 ...

  8. center

    center标签对其包围的文本进行水平居中处理

  9. Android Studio Jar、so、library项目依赖

    Eclipse跟AS的不同 从Eclipse到AS不要带着在Eclipse中的主观色彩去在AS中使用,从项目的构成到构建是不同的,下面列举在Eclipse和AS中的一些概念的区别: WorkSpace ...

  10. mysql实体关系

    数据库连接细节架构: 数据库编码: 关系数据库玩的是生活中物与物之间的关系.那么数据库要保存数据,事先就要描述情况数据如何保存.事务之间的关系如何处理等等. 现实生活中物称为实体,如商品,学生,文章, ...