日期(DatePicker)、时间(TimePicker)是两个比较易用的控件,他们都是从帧布局FrameLayout派生而出的;他们在FrameLayout的基础上提供了一些方法来获取当前用户所选择的日期和时间;如果程序需要获取日期和时间,则可以通过为DatePicker添加OnDateChangedListener进行监听,为TimePicker添加OnTimeChangeListenter进行监听来实现。
以一个让用户选择日期和时间的例子来展示下他们的功能和用法。
layout/main.xml:
1 <?xml version="1.0" encoding="utf-8"?>
2 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3 android:orientation="vertical"
4 android:layout_width="fill_parent"
5 android:layout_height="fill_parent"
6 >
7
8 <!-- 显示用户输入日期、时间的控件 -->
9 <EditText android:id="@+id/show"
10 android:layout_width="fill_parent"
11 android:layout_height="wrap_content"
12 android:editable="false"
13 android:cursorVisible="false"
14 android:text="选择购买本书的具体时间"
15 />
16 <!-- 定义一个DatePicker组件 -->
17 <DatePicker android:id="@+id/datePicker"
18 android:layout_width="match_parent"
19 android:layout_height="260dip"
20 android:layout_gravity="center_horizontal"
21 />
22 <!-- 定义一个TimePicker组件 -->
23 <TimePicker android:id="@+id/timePicker"
24 android:layout_width="match_parent"
25 android:layout_height="160dip"
26 android:layout_gravity="center_horizontal"
27 />
28
29 </LinearLayout>
上面的代码里面定义了三个组件:EditText
、日期、时间
主程序:com.example.choosedate.ChooseDate.java
1 package com.example.choosedate;
2
3 import java.util.Calendar;
4
5 import android.support.v7.app.ActionBarActivity;
6 import android.support.v7.app.ActionBar;
7 import android.support.v4.app.Fragment;
8 import android.os.Bundle;
9 import android.view.LayoutInflater;
10 import android.view.Menu;
11 import android.view.MenuItem;
12 import android.view.View;
13 import android.view.ViewGroup;
14 import android.widget.DatePicker;
15 import android.widget.DatePicker.OnDateChangedListener;
16 import android.widget.EditText;
17 import android.widget.TimePicker;
18 import android.widget.TimePicker.OnTimeChangedListener;
19 import android.os.Build;
20
21 public class ChooseDate extends ActionBarActivity {
22
23 //定义5个记录当前时间的变量
24 private int year;
25 private int month;
26 private int day;
27 private int hour;
28 private int minute;
29
30 @Override
31 protected void onCreate(Bundle savedInstanceState) {
32 super.onCreate(savedInstanceState);
33 setContentView(R.layout.main);
34 //获得组件
35 DatePicker datePicker = (DatePicker) findViewById(R.id.datePicker);
36 TimePicker timePicker = (android.widget.TimePicker) findViewById(R.id.timePicker);
37
38 //获取当前的年、月、日、小时、分钟
39 Calendar c = Calendar.getInstance();
40 year = c.get(Calendar.YEAR);
41 month = c.get(Calendar.MONTH);
42 day = c.get(Calendar.DAY_OF_MONTH);
43 hour = c.get(Calendar.HOUR);
44 minute = c.get(Calendar.MINUTE);
45
46 //初始化datePicker组件,并指定监听器
47 datePicker.init(year, month, day, new OnDateChangedListener() {
48
49 @Override
50 public void onDateChanged(DatePicker view, int year, int month,
51 int day) {
52 ChooseDate.this.year = year;
53 ChooseDate.this.month = month;
54 ChooseDate.this.day = day;
55
56 //显示当前日期、时间
57 showDate(year, month , day , hour, minute);
58 }
59 });
60
61 //初始化timePicker组件指定监听器
62 timePicker.setOnTimeChangedListener(new OnTimeChangedListener() {
63
64 @Override
65 public void onTimeChanged(TimePicker view, int hour, int minute) {
66 ChooseDate.this.hour = hour;
67 ChooseDate.this.minute = minute;
68 //显示当前日期、时间
69 showDate(year, month , day , hour, minute);
70 }
71 });
72
73 }
74
75 //定义在EditText中显示当前日期、时间的方法
76 private void showDate(int year, int month , int day
77 , int hour , int minute)
78 {
79 EditText show = (EditText)findViewById(R.id.show);
80 show.setText("日期:" + year + "年" + month + "月"
81 + day + "日 " + hour + "时" + minute + "分");
82 }
83 }
效果图1:选择前
效果图2:选择后
Android 自学之日期DatePicker、时间TimePicker选择器,布布扣,bubuko.com
时间: 2024-08-07 17:00:29