Android组件的使用:DatePicker,TimePicker

本文详细介绍了DatePicker和TimePicker的使用方法,包括初始化、日期时间选择与监听,以及如何展示选择的日期时间。同时提供了修改显示效果的示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

DatePicker,TimePicker的使用


1、DatePicker的使用

1.1、

1)、在布局文件中声明一个DatePicker控件时,切换到视图模式时看不到效果,需要通过程序控制对其进行初始化。
<DatePicker    -->声明DatePicker控件
        android:id="@+id/dp_showdate"            -->设置控件id
        android:layout_width="match_parent"      -->设置控件宽度为父容器宽度
        android:layout_height="wrap_content"/>   -->设置控件高度为父容器高度

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);        //调用父类方法
        super.setContentView(R.layout.datepicker_layout);//设置布局管理器
        /*         year:表示要设置的年份
         *  monthOfYear:表示要设置的一年中的某月
         *   dayOfMonth:表示要设置的一个月中的某天
         * onDateChangedListener:表示要设置的时间改变的监听器,当时间改变时触发该事件
         */
        dp_showdate.init(year, monthOfYear, dayOfMonth, onDateChangedListener);
    }


2)、要对以上:year、monthOfYear、dayOfMonth进行初始化,可以使用java中提供的Calendar类方便的获得。
//使用Calendar类提供的日期方法,获得相应的年月日
    Calendar calendar = Calendar.getInstance();    //通过Calendar类提供的静态方法:类名.方法()获得Calendar实例
    int year = calendar.get(Calendar.YEAR);       //设置年份
    int monthOfYear = calendar.get(Calendar.YEAR);   //设置一年中的某月
    int dayOfMonth = calendar.get(Calendar.YEAR);   //设置一月中的某天

3)、然后再设置日期改变监听:
dp_showdate.init(year, monthOfYear, dayOfMonth, new OnDateChangedListener(){
            @Override
            public void onDateChanged(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
                //什么都没做
            }
        });

4)、运行效果:


1.2、为DatePicker添加日期改变监听

1)、在布局文件中添加一个TextView,用于显示日期
<TextView       -->定义一个TextView控件
        android:id="@+id/tv_showdate"              -->设置控件id
        android:layout_width="match_parent"        -->设置控件宽度
        android:layout_height="wrap_content"/>     -->设置控件高度

2)、在监听方法中初始化年月日:
DatePickerDemoActivity.this.year = year;                //选择后的年份
DatePickerDemoActivity.this.monthOfYear = monthOfYear;  //选择后的月份
DatePickerDemoActivity.this.dayOfMonth = dayOfMonth;    //选择后的天

定义一个方法,用于显示信息:
/*
     * 该方法用于显示信息
     */
    public void showInfo(int year,int monthOfYear,int dayOfMonth){
        String info =year+"年"+monthOfYear+"月"+dayOfMonth+"日";
        tv_showdate.setText(info);//把输出的信息放到TextView中
    }

3)、完整代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout    -->定义线性布局管理器
    xmlns:android="http://schemas.android.com/apk/res/android"   -->命名控件
    android:layout_width="match_parent"               -->设置管理器宽度为屏幕宽度
    android:layout_height="match_parent"                -->设置管理器高度为屏幕高度
    android:orientation="vertical" >                  -->设置管理器中的内容为垂直摆放
    <TextView    -->定义组件
        android:id="@+id/tv_showdate"             -->为组件设置id
        android:layout_width="match_parent"    -->设置组件宽度为父容器宽度
        android:layout_height="wrap_content"/>   -->设置组件高度
    <DatePicker   -->定义组件
        android:id="@+id/dp_showdate"         -->设置组件id
        android:layout_width="match_parent"     -->设置组件宽度为父容器宽度
        android:layout_height="wrap_content"/>   -->设置组件高度为包裹内容高度
</LinearLayout>

DatePickerDemoActivity类:
package com.example.basiccomponent2;

import java.util.Calendar;

import android.app.Activity;
import android.os.Bundle;
import android.widget.DatePicker;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.TextView;

public class DatePickerDemoActivity extends Activity {
    private TextView tv_showdate = null;          //声明TextView对象
    private DatePicker dp_showdate = null;        //声明DatePicker对象
    //使用Calendar类提供的日期方法,获得相应的年月日
    Calendar calendar = Calendar.getInstance();
    int year = calendar.get(Calendar.YEAR);
    int monthOfYear = calendar.get(Calendar.YEAR);
    int dayOfMonth = calendar.get(Calendar.YEAR);
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.setContentView(R.layout.datepicker_layout);//设置布局管理器
        //初始化view
        dp_showdate = (DatePicker)super.findViewById(R.id.dp_showdate);
        tv_showdate = (TextView)super.findViewById(R.id.tv_showdate);
        /*         year:表示要设置的年份
         *  monthOfYear:表示要设置的一年中的某月
         *   dayOfMonth:表示要设置的一个月中的某天
         * onDateChangedListener:表示要设置的时间改变的监听器
         */
        dp_showdate.init(year, monthOfYear, dayOfMonth, new OnDateChangedListener(){
            @Override
            public void onDateChanged(DatePicker view, int year, int monthOfYear,int dayOfMonth) {
                DatePickerDemoActivity.this.year = year;                //选择后的年份
                DatePickerDemoActivity.this.monthOfYear = monthOfYear;  //选择后的月份
                DatePickerDemoActivity.this.dayOfMonth = dayOfMonth;    //选择后的天
                DatePickerDemoActivity.this.showInfo(year, monthOfYear,dayOfMonth);//调用显示信息方法
            }
        });
    }
    /*
     * 该方法用于显示信息
     */
    public void showInfo(int year,int monthOfYear,int dayOfMonth){
        String info =year+"年"+(monthOfYear+1)+"月"+dayOfMonth+"日";
        tv_showdate.setText(info);//把输出的信息放到TextView中
    }
    
}

修改显示日期效果,为小于10的数字添加0:
public void showInfo(int year, int monthOfYear, int dayOfMonth) {
        String info = year + "年" + addZero(monthOfYear+1) + "月" + addZero(dayOfMonth) + "日";
        tv_showdate.setText(info);// 把输出的信息放到TextView中
    }
    public String addZero(int num){
        String str = null;
        if(num<10){
            str = "0"+num;
        }else{
            str = ""+num;
        }
        return str;
    }

运行效果:



2、TimePicker的使用

2.1、

1)、TimePicker的使用和DatePicker类似,但是不用给其初始化,在布局文件中添加一个TimePicker组件:
<TimePicker 
        android:id="@+id/tp_showtime"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"/>

2)、在Activity类中,完整代码:
package com.example.basiccomponent2;

import java.util.Calendar;

import android.app.Activity;
import android.os.Bundle;
import android.widget.DatePicker;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.TextView;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;

public class DatePickerDemoActivity extends Activity {
    private TextView tv_showdate = null; //
    private DatePicker dp_showdate = null; //
    private TimePicker tp_showtime = null;
    // 使用Calendar类提供的日期方法,获得相应的年月日
    Calendar calendar = Calendar.getInstance();
    int year = calendar.get(Calendar.YEAR);
    int monthOfYear = calendar.get(Calendar.YEAR);
    int dayOfMonth = calendar.get(Calendar.YEAR);

    int hourOfDay = calendar.get(Calendar.HOUR_OF_DAY);
    int minute = calendar.get(Calendar.MINUTE);
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        super.setContentView(R.layout.datepicker_layout);// 设置布局管理器
        // 初始化view
        dp_showdate = (DatePicker) super.findViewById(R.id.dp_showdate);
        tv_showdate = (TextView) super.findViewById(R.id.tv_showdate);
        tp_showtime = (TimePicker)super.findViewById(R.id.tp_showtime);
        /*
         * year:表示要设置的年份 monthOfYear:表示要设置的一年中的某月 dayOfMonth:表示要设置的一个月中的某天
         * onDateChangedListener:表示要设置的时间改变的监听器
         */
        dp_showdate.init(year, monthOfYear, dayOfMonth,new OnDateChangedListener() {
                    @Override
                    public void onDateChanged(DatePicker view, int year,int monthOfYear, int dayOfMonth) {
                        DatePickerDemoActivity.this.year = year; // 选择后的年份
                        DatePickerDemoActivity.this.monthOfYear = monthOfYear; // 选择后的月份
                        DatePickerDemoActivity.this.dayOfMonth = dayOfMonth; // 选择后的天
                        DatePickerDemoActivity.this.showInfo(year, monthOfYear,dayOfMonth,hourOfDay,minute);// 调用显示信息方法
                    }
        });
        //设置时间事件
        tp_showtime.setOnTimeChangedListener(new OnTimeChangedListener(){
            @Override
            public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
                DatePickerDemoActivity.this.hourOfDay = hourOfDay;
                DatePickerDemoActivity.this.minute = minute;
                DatePickerDemoActivity.this.showInfo(year, monthOfYear,dayOfMonth,hourOfDay,minute);// 调用显示信息方法
            }
        });
    }

    /*
     * 该方法用于显示信息
     */
    public void showInfo(int year, int monthOfYear, int dayOfMonth,int hourOfDay,int minute) {
        String info = year + "年" + addZero(monthOfYear+1) 
                           + "月" + addZero(dayOfMonth) 
                           + "日" + addZero(hourOfDay)
                           + "时" + addZero(minute)
                           + "分";
        tv_showdate.setText(info);// 把输出的信息放到TextView中
    }
    public String addZero(int num){
        String str = null;
        if(num<10){
            str = "0"+num;
        }else{
            str = ""+num;
        }
        return str;
    }

}

3)、运行效果:


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值