自定义一个时间选择器的类 DateTimePickDialogUtil.class

 public class DateTimePickDialogUtil implements DatePicker.OnDateChangedListener,
        TimePicker.OnTimeChangedListener {
        private DatePicker datePicker;
        private TimePicker timePicker;
        private AlertDialog ad;
        private String dateTime;
        private String initDateTime;
        private Activity activity;

        /**
         * 日期时间弹出选择框构造函数
         *
         * @param activity
         *            :调用的父activity
         * @param initDateTime
         *            初始日期时间值,作为弹出窗口的标题和日期时间初始值
         */
        public DateTimePickDialogUtil(Activity activity, String initDateTime) {
            this.activity = activity;
            this.initDateTime = initDateTime;

        }

        public void init(DatePicker datePicker, TimePicker timePicker) {
            Calendar calendar = Calendar.getInstance();
            if (!(null == initDateTime || "".equals(initDateTime))) {
                calendar = this.getCalendarByInintData(initDateTime);
            } else {
                initDateTime = calendar.get(Calendar.YEAR) + "-"
                        + calendar.get(Calendar.MONTH) + "-"
                        + calendar.get(Calendar.DAY_OF_MONTH);
            }
            datePicker.init(calendar.get(Calendar.YEAR),
                    calendar.get(Calendar.MONTH),
                    calendar.get(Calendar.DAY_OF_MONTH), this);
        }

        /**
         * 弹出日期时间选择框方法
         * :为需要设置的日期时间文本编辑框

          *展示的布局

         */
        public AlertDialog dateTimePicKDialog(final TextView inputDate) {
         //TextView inputDate 使用的地方传过来,用来展示时间
            LinearLayout dateTimeLayout = (LinearLayout) activity
                    .getLayoutInflater().inflate(R.layout.common_datetime, null);
            datePicker = (DatePicker) dateTimeLayout.findViewById(R.id.datepicker);
            timePicker = (TimePicker) dateTimeLayout.findViewById(R.id.timepicker);
            init(datePicker, timePicker);
            timePicker.setIs24HourView(true);

            timePicker.setOnTimeChangedListener(this);

           //影藏日历,可能会无效

            datePicker.setCalendarViewShown(false);
            ad = new AlertDialog.Builder(activity)
                    .setTitle(initDateTime)
                    .setView(dateTimeLayout)
                    .setNegativeButton(activity.getString(R.string.cancel), new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {

                            datePicker.clearFocus();
                            onDateChanged(null, 0, 0, 0);
                            if(inputDate.getText().toString().equals("")){
                                inputDate.setText("");
                            }

                        }
                    })
                    .setPositiveButton(activity.getString(R.string.sure), new DialogInterface.OnClickListener() {
                        public void onClick(DialogInterface dialog, int whichButton) {
                            datePicker.clearFocus();
                            onDateChanged(null, 0, 0, 0);

                            //展示时间

                            inputDate.setText(dateTime);

                        }
                    }).show();



            return ad;
        }

        public void onTimeChanged(TimePicker view, int hourOfDay, int minute) {
            onDateChanged(null, 0, 0, 0);
        }

        public void onDateChanged(DatePicker view, int year, int monthOfYear,
                                  int dayOfMonth) {
            // 获得日历实例
            Calendar calendar = Calendar.getInstance();

            calendar.set(datePicker.getYear(), datePicker.getMonth(),
                    datePicker.getDayOfMonth());
            //修改展示日期的格式:yyyy年MM月dd日
            SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日");

            dateTime = sdf.format(calendar.getTime());
            ad.setTitle(dateTime);
        }

        /**
         * 实现将初始日期时间20120702 拆分成2012 07 02,并赋值给calendar
         *
         *  initDateTime 初始日期字符串
         */

        private Calendar getCalendarByInintData(String initDateTime) {
            Calendar calendar = Calendar.getInstance();
            int currentYear = Integer.parseInt(initDateTime.substring(0, 4));
            int currentMonth = Integer.parseInt(initDateTime.substring(5, 7)) - 1;
            int currentDay = Integer.parseInt(initDateTime.substring(8,
                    initDateTime.length()-1));

            calendar.set(currentYear, currentMonth, currentDay);

            return calendar;
        }
    }

绘制时间选择器的布局 common_datetime

<?xml version="1.0" encoding="utf-8"?>
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

            android:id="@+id/datepicker"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:startYear="0"

        //影藏日历

        android:calendarViewShown="false"

        //设置主题改变样式

        android:theme="@android:style/Theme.Holo.Light"
        android:endYear="9999"
         />
  
            android:id="@+id/timepicker"
        android:visibility="gone"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content" />


目前只知道这么几个主题:

//滑动型

  android:theme="@android:style/Theme.Holo.Light"

//下面连个是按钮型
  android:theme="@android:style/Theme.Light.NoTitleBar"
  android:theme="@android:style/Theme.Light"


准备好这些之后,开始使用,在需要使用的activity中设置监听
日期时间选择控件 使用方法:

private TextView inputDate;//需要设置的日期时间文本框

private String  initDateTime="2012年9月3日 14:44",//初始日期时间值 在点击事件中使用:

 inputDate.setOnClickListener(new OnClickListener() {
 @Override public void onClick(View v) {

          //将展示文本和默认时间传过去

          DateTimePickDialogUtil dateTimePicKDialog=new DateTimePickDialogUtil(this,initDateTime);

          dateTimePicKDialog.dateTimePicKDialog(inputDate);

           } });


OK,完工

更多相关文章

  1. Toast的基本用法
  2. Android之时间戳的简单使用
  3. Android(安卓)ContentProvider 使用limit
  4. Android7.0修改时间服务器
  5. Android(安卓)自定义自由选择时间区间的日历控件
  6. Android(安卓)Webview 部分图片显示不出来问题
  7. Android(安卓)优化电池使用时间 ——监控电池电量和充电状态
  8. Android(安卓)进阶——实现周期性任务调度的几种攻略详解
  9. 修改android 4.4系统下面的休眠时间,只留下永不休眠选项

随机推荐

  1. android下拉菜单——选择星座
  2. 很好的Android论坛
  3. android 开源项目(城市定位)
  4. Android中获取当前进程名称
  5. 关于Android中xstreamjar冲突
  6. Android 自定义时间选择器
  7. 如何在android中使用你自己的数据文件
  8. android studio 53 mp3
  9. android 单选,复选按钮,以及toast
  10. Android应用框架之 Application