zoukankan      html  css  js  c++  java
  • Android DatepickerDialog(日期选择器)的使用


    效果图如下:




     

    日期和时间选择对话框,首先是要获得当前时间,这里用 java类中的Calendar来获得日期和时间(也可以用Date,但是不提倡,Date部分方法已经注释为过时), Calendar是一个抽象类,是通过getInstance()来获得实例

    日期和时间选择对话框无需在像前面一样借组与AlertDialog.Builder来作为内容的载体,有直接的Dialog,其实源码里面已经包括了Builder。

    1、DatePickerDialog 是日期Dialog,如下建立

    dialog = new DatePickerDialog(this, 
                            dateListener, 
                            calendar.get(Calendar.YEAR), 
                            calendar.get(Calendar.MONTH), 
                            calendar.get(Calendar.DAY_OF_MONTH)); 

    this 表示当前 Acitivity,表示这是当前Acitivity的对话框

    dateListener为产生日期事件的监听器,这里是通过DatePickerDialog.OnDateSetListener来获得,代码如下

    DatePickerDialog.OnDateSetListener dateListener =  
        new DatePickerDialog.OnDateSetListener() { 
            @Override 
            public void onDateSet(DatePicker datePicker,  
                    int year, int month, int dayOfMonth) { 
                EditText editText =  
                    (EditText) findViewById(R.id.editText); 
                 //Calendar月份是从0开始,所以month要加1 
                editText.setText("你选择了" + year + "年" +  
                        (month+1) + "月" + dayOfMonth + "日"); 
            } 
        }; 
     
     

    这里注意的是calendar.getCalendar(Calendar.MONTH), Calendar类中是从0开始取月份的,但是这里DatePickerDialog已经做了处理。

     2、TimePickerDialog为时间选择对话框,实现代码如下:

    dialog = new TimePickerDialog(this, timeListener, 
                                calendar.get(Calendar.HOUR_OF_DAY), 
                                calendar.get(Calendar.MINUTE), 
                                false);   //是否为二十四制 

    timeListener 是一个TimePickerDialog.OnTimeSetListener 实例。

     -------------------------------------------------------------------------------------------------------------------------

     这是日期选择对话框                                                                        这是时间选择对话框

    实现步骤:

    第一步:一个用来显示选择的内容的输入框和两个用来显示日期和时间的按钮

    res/layout/date_time_dialog_layout.xml
    
    [xhtml] <?xml version="1.0" encoding="utf-8"?> 
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
        android:orientation="vertical" 
        android:layout_width="fill_parent" 
        android:layout_height="fill_parent" 
        > 
        <EditText android:id="@+id/editText" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content" 
            android:editable="false" 
            android:cursorVisible="false"/> 
        <Button android:id="@+id/btnDate" 
            android:text="显示日期选择对话框" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"/> 
        <Button android:id="@+id/btnTime" 
            android:text="显示时间选择对话框" 
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content" /> 
    </LinearLayout> 
    
     

    第二步:

    在DateTimeDialogActivity的OnCreate方法里面要对两个button进行单击事件处理,OnCreateDialog来处理产生对话框

    src/com/dialog/activity/DateTimeDialogActivity.java
    
    [java] package com.dialog.activity; 
     
    import java.util.Calendar; 
     
    import android.app.Activity; 
    import android.app.DatePickerDialog; 
    import android.app.Dialog; 
    import android.app.TimePickerDialog; 
    import android.os.Bundle; 
    import android.view.View; 
    import android.widget.Button; 
    import android.widget.DatePicker; 
    import android.widget.EditText; 
    import android.widget.TimePicker; 
     
    public class DateTimeDialogActivity extends Activity { 
         
        private final int DATE_DIALOG = 1; 
         
        private final int TIME_DIALOG = 2; 
        @Override 
        public void onCreate(Bundle savedInstanceState) { 
            super.onCreate(savedInstanceState); 
            setContentView(R.layout.date_time_dialog_layout); 
             
            View.OnClickListener dateBtnListener =  
                new BtnOnClickListener(DATE_DIALOG); 
           
            Button btnDate = (Button) findViewById(R.id.btnDate); 
            btnDate.setOnClickListener(dateBtnListener); 
             
            View.OnClickListener timeBtnListener =  
                new BtnOnClickListener(TIME_DIALOG); 
            Button btnTime = (Button) findViewById(R.id.btnTime); 
            btnTime.setOnClickListener(timeBtnListener); 
        } 
         
         
        protected Dialog onCreateDialog(int id) { 
            //用来获取日期和时间的 
            Calendar calendar = Calendar.getInstance();  
             
            Dialog dialog = null; 
            switch(id) { 
                case DATE_DIALOG: 
                    DatePickerDialog.OnDateSetListener dateListener =  
                        new DatePickerDialog.OnDateSetListener() { 
                            @Override 
                            public void onDateSet(DatePicker datePicker,  
                                    int year, int month, int dayOfMonth) { 
                                EditText editText =  
                                    (EditText) findViewById(R.id.editText); 
                                 //Calendar月份是从0开始,所以month要加1 
                                editText.setText("你选择了" + year + "年" +  
                                        (month+1) + "月" + dayOfMonth + "日"); 
                            } 
                        }; 
                    dialog = new DatePickerDialog(this, 
                            dateListener, 
                            calendar.get(Calendar.YEAR), 
                            calendar.get(Calendar.MONTH), 
                            calendar.get(Calendar.DAY_OF_MONTH)); 
                    break; 
                case TIME_DIALOG: 
                    TimePickerDialog.OnTimeSetListener timeListener =  
                        new TimePickerDialog.OnTimeSetListener() { 
                             
                            @Override 
                            public void onTimeSet(TimePicker timerPicker, 
                                    int hourOfDay, int minute) { 
                                EditText editText =  
                                    (EditText) findViewById(R.id.editText); 
                                editText.setText("你选择了" + hourOfDay + "时" +  
                                         minute + "分"); 
                            } 
                        }; 
                        dialog = new TimePickerDialog(this, timeListener, 
                                calendar.get(Calendar.HOUR_OF_DAY), 
                                calendar.get(Calendar.MINUTE), 
                                false);   //是否为二十四制 
                    break; 
                default: 
                    break; 
            } 
            return dialog; 
        } 
        /*
         * 成员内部类,此处为提高可重用性,也可以换成匿名内部类
         */ 
        private class BtnOnClickListener implements View.OnClickListener { 
             
            private int dialogId = 0;   //默认为0则不显示对话框 
     
            public BtnOnClickListener(int dialogId) { 
                this.dialogId = dialogId; 
            } 
            @Override 
            public void onClick(View view) { 
                showDialog(dialogId); 
            } 
             
        } 
    } 
  • 相关阅读:
    【NOIP 2003】 加分二叉树
    【POJ 1655】 Balancing Act
    【HDU 3613】Best Reward
    【POJ 3461】 Oulipo
    【POJ 2752】 Seek the Name, Seek the Fame
    【POJ 1961】 Period
    【POJ 2406】 Power Strings
    BZOJ3028 食物(生成函数)
    BZOJ5372 PKUSC2018神仙的游戏(NTT)
    BZOJ4836 二元运算(分治FFT)
  • 原文地址:https://www.cnblogs.com/niray/p/3877503.html
Copyright © 2011-2022 走看看