文档章节

android常用组件之DatePicker和TimePicker

sometimesno1
 sometimesno1
发布于 2014/12/20 19:16
字数 870
阅读 306
收藏 8

在android中,DatePicker组件和TimePicker组件分别是日期选择器和时间选择器。

该实例中,当点击日期选择器按钮后,弹出日期选择框,用户选择日期后andoid会将日期显示到TextView组件中;当点击时间选择器按钮后,弹出时间选择框,选择后在相应的TextView组件显示时间。

日期选择框和时间选择框在创建实例的过程中,构造方法的参数类似,以下分别介绍:

1、日期选择框创建实例如下

DatePickerDialog datePicker=new DatePickerDialog(Context context, OnDateSetListener callBack, int year, int  monthOfYear, int dayOfMonth);

其中第二个参数是日期选择框的监听方法,通过该方法可以将选择日期的年月日返回,后三个参数是弹出日期选择框的初始日期显示。

日期选择框的监听方法如下,需要覆写onDateSet()方法。

DatePickerDialog.OnDateSetListener date_callback=new DatePickerDialog.OnDateSetListener() {
        @Override
        public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {//arg1~arg3分别是选择的年月日
            textView_Date.setText(String.format("%s年%s月%s日",format_conver(arg1),format_conver(arg2),format_conver(arg3)));//自定义一个format_conver()方法保证格式输出 
        }
    };

2、时间选择框创建实例和日期选择框过程类似,参数基本相同。

TimePickerDialog timePicker=new TimePickerDialog(Context context, OnTimeSetListener callBack, int hourOfDay, int minute, boolean is24HourView);

其中最后一个参数是时间采用12小时制还是24小时制显示。

时间选择框监听方法如下,需要重写onTimeSet()方法。

TimePickerDialog.OnTimeSetListener time_callback=new TimePickerDialog.OnTimeSetListener() {
        @Override
        public void onTimeSet(TimePicker arg0, int arg1, int arg2) {//arg1表示小时,arg2表示分钟    
            textView_Time.setText(String.format("%s:%s", format_conver(arg1),format_conver(arg2)));//格式输出
        }
    };


实例测试代码如下:

首先是布局文件:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="main.test_dt_picker.MainActivity">

    <TextView 
        android:id="@+id/tv1_Date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:text="@string/tv_Date"/>
    <Button
        android:id="@+id/btn1_Date"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/btn_Date" />
    <TextView 
        android:id="@+id/tv2_Time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textSize="30sp"
        android:text="@string/tv_Time"/>
    <Button 
        android:id="@+id/btn2_Time"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/btn_Time"/>

</LinearLayout>

其次是strings.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string name="app_name">Test_DT_Picker</string>
    <string name="action_settings">Settings</string>
    <string name="tv_Date">None</string>
    <string name="tv_Time">None</string>
    <string name="btn_Date">日期选择器</string>
    <string name="btn_Time">时间选择器</string>

</resources>

再次是android源码文件:

package main.test_dt_picker;

import android.app.DatePickerDialog;
import android.app.TimePickerDialog;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.DatePicker;
import android.widget.TextView;
import android.widget.TimePicker;

public class MainActivity extends ActionBarActivity implements OnClickListener{

    private Button button_Date=null,button_Time=null;
    private TextView textView_Date=null,textView_Time=null;
    private DatePickerDialog datePicker=null;
    private TimePickerDialog timePicker=null;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        button_Date=(Button)findViewById(R.id.btn1_Date);
        button_Time=(Button)findViewById(R.id.btn2_Time);
        textView_Date=(TextView)findViewById(R.id.tv1_Date);
        textView_Time=(TextView)findViewById(R.id.tv2_Time);
        
        button_Date.setOnClickListener(MainActivity.this);
        button_Time.setOnClickListener(MainActivity.this);
        
        datePicker=new DatePickerDialog(MainActivity.this, date_callback, 2012, 6, 18);
        
        timePicker=new TimePickerDialog(MainActivity.this, time_callback, 10, 5, true);   
    }

    @Override
    public void onClick(View arg0) {
        // TODO Auto-generated method stub
        int btn_id=arg0.getId();
        switch (btn_id) {
        case R.id.btn1_Date: datePicker.show();break;
        case R.id.btn2_Time: timePicker.show();break;
        default: break;
        }
    }
    
    DatePickerDialog.OnDateSetListener date_callback=new DatePickerDialog.OnDateSetListener() {
        
        @Override
        public void onDateSet(DatePicker arg0, int arg1, int arg2, int arg3) {
            
            textView_Date.setText(String.format("%s年%s月%s日",format_conver(arg1),format_conver(arg2),format_conver(arg3)));
            
        }
    };
    
    TimePickerDialog.OnTimeSetListener time_callback=new TimePickerDialog.OnTimeSetListener() {
        
        @Override
        public void onTimeSet(TimePicker arg0, int arg1, int arg2) {
            
            textView_Time.setText(String.format("%s:%s", format_conver(arg1),format_conver(arg2)));
            
        }
    };
    
    public String format_conver(int s){//该方法为了输出一位数时保证前面加一个0,使之与实现十位数对齐,比如时间是12:5,使用该方法后输出为12:05
        return s>=10?""+s:"0"+s;
    }
}

最后是三张测试图片:

第一张启动后原图:

点击日期选择框按钮后弹出的日期选择框:

最后测试图片:

© 著作权归作者所有

sometimesno1
粉丝 1
博文 19
码字总数 8989
作品 0
杭州
程序员
私信 提问
时间与日期选择器——Mars Android开发视频之第一季第十六集(重)

1· TimePicker的使用方法 TimePicker的样子(4.2版本): 下面,我们来添加一个TimePicker: 这样,就添加上了: 1.1 获取用户选择的时间: 声明成员变量: 接着获取这个控件: 然后实现Tim...

周田
2015/08/21
199
0
uiw 1.4.2 发布,基于 React 的组件库

新版发布, 高品质的UI工具包,React的组件库,为打造高品质的React UI工具包的理想而奋斗!!! 新特性: DatePicker/TimePicker组件继承Input组件部分属性。 6509447 Bug修复: 修复DatePic...

同一种调调
2017/11/28
288
2
android TimePicker

在Android中关于日期时间的类有TimePicker、DatePicker、TimePickerDialog、DatePickerDialog、Calendar。其中TimePickerDialog、DatePickerDialog是对话框形式。 一、TimePicker   查看一...

amigos_wu
2012/07/10
8K
2
uiw 1.4.0 发布,新增日历控件

新版发布, 高品质的UI工具包,React的组件库,为打造高品质的React UI工具包的理想而奋斗!!! 更新内容: 新功能: DatePicker组件添加format属性支持。ea2a783 DatePicker组件添加showTod...

同一种调调
2017/11/27
821
4
Element-UI 1.0.6 发布,Vue 2.0 的桌面 UI 元素

Element-UI v1.0.6 发布了,Element-UI 是由饿了么公司前端团队开源,是一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的组件库,提供了配套设计资源,帮助你的网站快速成型。 更新内容...

王练
2016/12/12
11.9K
23

没有更多内容

加载失败,请刷新页面

加载更多

最简单的获取相机拍照的图片

  import android.content.Intent;import android.graphics.Bitmap;import android.os.Bundle;import android.os.Environment;import android.provider.MediaStore;import andr......

MrLins
16分钟前
1
0
说好不哭!数据可视化深度干货,前端开发下一个涨薪点在这里~

随着互联网在各行各业的影响不断深入,数据规模越来越大,各企业也越来越重视数据的价值。作为一家专业的数据智能公司,个推从消息推送服务起家,经过多年的持续耕耘,积累沉淀了海量数据,在...

个推
17分钟前
4
0
第三方支付-返回与回调注意事项

不管是支付宝,微信,还是其它第三方支付,第四方支付,支付机构服务商只要涉及到钱的交易都要进行如下校验,全部成功了才视为成功订单 1.http请求是否成功 2.校验商户号 3.校验订单号及状态...

Shingfi
20分钟前
3
0
简述Java内存分配和回收策略以及Minor GC 和 Major GC(Full GC)

内存分配: 1. 栈区:栈可分为Java虚拟机和本地方法栈 2. 堆区:堆被所有线程共享,在虚拟机启动时创建,是唯一的目的是存放对象实例,是gc的主要区域。通常可分为两个区块年轻代和年老代。更...

DustinChan
26分钟前
4
0
Excel插入批注:可在批注插入文字、形状、图片

1.批注一直显示:审阅选项卡-------->勾选显示批注选项: 2.插入批注快捷键:Shift+F2 组合键 3.在批注中插入图片:鼠标右键点击批注框的小圆点【重点不可以在批注文本框内点击】----->调出批...

东方墨天
50分钟前
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部