官术网_书友最值得收藏!

5.1 日期時間控件

本節介紹Android的日期時間控件,主要是日期選擇對話框DatePickerDialog和時間選擇對話框TimePickerDialog的用法。

5.1.1 日期選擇器DatePicker

雖然EditText控件提供inputType="date"的日期輸入,但是很少有用戶會老老實實地手工輸入日期,況且EditText還不支持“****年**月**日”這樣的日期格式,所以都要系統提供日期控件,供用戶選擇具體的年月日,在Android中這個控件是DatePicker。不過,DatePicker并非彈窗模式,而是直接在頁面上占據一塊區域,并且不會自動關閉。按習慣來說,日期控件應該在當前頁面彈出,選擇完日期就要把控件關掉。因此,DatePicker不適合直接使用,實際開發中用的是已經封裝好的日期選擇對話框DatePickerDialog。

DatePickerDialog相當于在AlertDialog上加載了DatePicker,用起來更簡單,只需調用構造函數設置一下當前年、月、日,然后調用show方法即可彈出日期對話框。日期選擇事件由監聽器OnDateSetListener負責響應,在該監聽器實現的onDateSet方法中,開發者能夠獲得用戶選擇的具體日期,并做后續處理。這里要特別注意onDateSet方法的月份參數,該參數的起始值不是1而是0。也就是說,一月份對應的參數數值是0,十二月份對應的參數數值是11。如果實在不理解,記住這里的月份值要加1就行了。

圖5-1所示為一個默認樣式的日期選擇對話框。其中,年、月、日通過上下滑動選擇。

圖5-1 日期選擇對話框

下面是使用日期對話框的代碼:

        public class DatePickerActivity extends AppCompatActivity implements OnClickListener,
    OnDateSetListener {
            private TextView tv_date;


            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_date_picker);
                tv_date = (TextView) findViewById(R.id.tv_date);
                findViewById(R.id.btn_date).setOnClickListener(this);
            }


            @Override
            public void onClick(View v) {
                if (v.getId() == R.id.btn_date) {
                    Calendar calendar = Calendar.getInstance();
                    DatePickerDialog dialog = new DatePickerDialog(this, this,
                            calendar.get(Calendar.YEAR), calendar.get(Calendar.MONTH),
                            calendar.get(Calendar.DAY_OF_MONTH));
                    dialog.show();
                }
            }


            @Override
            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
                String desc = String.format("您選擇的日期是%d年%d月%d日",
                        year, monthOfYear+1, dayOfMonth);
                tv_date.setText(desc);
            }
        }

5.1.2 時間選擇器TimePicker

有了日期選擇器,肯定有對應的時間選擇器。同樣,實際開發中也不直接用TimePicker,而是用封裝好的時間選擇對話框TimePickerDialog。該對話框的用法類似DatePickerDialog,不同之處主要有兩個:

(1)構造函數傳的是當前的小時與分鐘,最后一個參數表示是否采用二十四小時制,一般傳true,表示小時的數值范圍為0~23。

(2)時間選擇監聽器是OnTimeSetListener,對應需要實現的方法是onTimeSet,在該方法中可獲得用戶選好的小時和分鐘。

圖5-2所示為一個默認樣式的時間選擇對話框。其中,小時與分鐘可通過上下滑動選擇。

圖5-2 時間選擇對話框

下面是使用時間對話框的代碼:

        public class TimePickerActivity extends AppCompatActivity implements OnClickListener,
    OnTimeSetListener {
            private TextView tv_time;


            @Override
            protected void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_time_picker);
                tv_time = (TextView) findViewById(R.id.tv_time);
                findViewById(R.id.btn_time).setOnClickListener(this);
            }


            @Override
            public void onClick(View v) {
                if (v.getId() == R.id.btn_time) {
                    Calendar calendar = Calendar.getInstance();
                    TimePickerDialog dialog = new TimePickerDialog(this, this,
                            calendar.get(Calendar.HOUR_OF_DAY), calendar.get(Calendar.MINUTE),
    true);
                    dialog.show();
                }
            }


            @Override
            public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
                String desc = String.format("您選擇的時間是%d時%d分", hourOfDay, minute);
                tv_time.setText(desc);
            }
        }
主站蜘蛛池模板: 常宁市| 成都市| 塔河县| 大石桥市| 固阳县| 山东| 久治县| 商城县| 霞浦县| 辽源市| 察隅县| 鹰潭市| 保山市| 姜堰市| 谢通门县| 吉木乃县| 沙洋县| 芜湖市| 琼结县| 德惠市| 潜江市| 平果县| 晋州市| 平和县| 三穗县| 玉田县| 宁陕县| 红河县| 崇州市| 遂宁市| 旺苍县| 九龙坡区| 凭祥市| 莱西市| 瑞昌市| 建德市| 佛坪县| 南安市| 宁德市| 武安市| 阳山县|