Android小程序-日历选择器

时间:2022-02-04 00:02:31

目标效果:

Android小程序-日历选择器 Android小程序-日历选择器 Android小程序-日历选择器

运行程序后会发现对话框后边的标题栏上显示了当前的日期和时间,在第一个时间对话框更改时间后显示日期对话框时,更改过的时间又显示到了标题栏上,当在日期对话框更改日期后,标题栏也显示出更改后的日期,进入页面滑动控件进行选择日期或者时间,都会显示在标题栏上。


1.首先在activity_main.xml页面放入两个选择器控件。

activity_main.xml页面:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity" >

<TimePicker
android:id="@+id/tpTime"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/dpDate"
android:layout_marginLeft="19dp"
android:layout_marginTop="72dp" />

<DatePicker
android:id="@+id/dpDate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="84dp" />

</RelativeLayout>


2.在MainActivity.java页面进行事件处理。 MainActivity.java页面;
package com.example.selecttime;

import java.util.Calendar;

import android.os.Bundle;
import android.app.Activity;
import android.app.DatePickerDialog;
import android.app.DatePickerDialog.OnDateSetListener;
import android.app.TimePickerDialog;
import android.app.TimePickerDialog.OnTimeSetListener;
import android.view.Menu;
import android.widget.DatePicker;
import android.widget.DatePicker.OnDateChangedListener;
import android.widget.TimePicker;
import android.widget.TimePicker.OnTimeChangedListener;

public class MainActivity extends Activity {

private TimePicker tpTime; //实例选择器控件
private DatePicker dpDate;
private Calendar cal; //实例日期类
private int year,month,day,hour,minute;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

cal=Calendar.getInstance(); //获取日历对象

year=cal.get(Calendar.YEAR); //获取年月日时分秒
month=cal.get(Calendar.MONTH)+1; //获取到的月份是从0开始计数,所以需要加一
day=cal.get(Calendar.DAY_OF_MONTH);
hour=cal.get(Calendar.HOUR_OF_DAY);
minute=cal.get(Calendar.MINUTE);
setTitle(year+"-"+month+"-"+day+" "+hour+":"+minute);//将日期时间显示在标题栏上

tpTime=(TimePicker) findViewById(R.id.tpTime); //获取控件
dpDate=(DatePicker) findViewById(R.id.dpDate);


/**
* dataPicker初始化,日期选择器的改变事件
* 第二个参数传递的是月份,默认自动加一,所以不能用之前手动加一的month值
*/
dpDate.init(year,cal.get(Calendar.MONTH), day, new OnDateChangedListener() {
@Override
public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
setTitle(year+"-"+(monthOfYear+1)+"-"+dayOfMonth); //将更改后的显示到标题栏
}
});


/**
* timePicker初始化,时间选择器的改变事件
*/
tpTime.setOnTimeChangedListener(new OnTimeChangedListener() {
@Override
public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
setTitle(hourOfDay+":"+minute);
}
});


/**
*日期选择对话框
*/
new DatePickerDialog(this, new OnDateSetListener() {

@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
setTitle(year+"-"+(monthOfYear+1)+"-"+dayOfMonth); //将更改后的再显示到标题栏上
}
}, year,cal.get(Calendar.MONTH), day).show(); //改变结果显示到控件上


/**
* 时间对话框
*/
new TimePickerDialog(this, new OnTimeSetListener() {
@Override
public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
setTitle(hourOfDay+":"+minute); //将更改后的再显示到标题栏上
}
}, hour, minute, true).show(); //改变结果显示到控件上
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}


3.运行程序就可以显示目标效果了。