【问题标题】:how to disable past time on timepicker in android如何在android中的timepicker上禁用过去的时间
【发布时间】:2018-08-17 22:30:05
【问题描述】:

这是我的代码时间视图和日期视图。如何我将成为选择日期,然后设置当前时间并禁用过去时间..下一个日期将被选择所有时间将启用如何可能这些选项如何编写此代码,任何人都可以帮助,如何按时禁用过去时间android中使用日历的选择器

public  void CalenderView() {

          /* ends after 1 month from now */
            Calendar endDate = Calendar.getInstance();
            endDate.add( Calendar.DAY_OF_WEEK_IN_MONTH, 1 );

            HorizontalCalendar horizontalCalendar = new HorizontalCalendar.Builder( this, R.id.calendarView )
                    .range( Calendar.getInstance(), endDate )
                    .datesNumberOnScreen( 5 )
                    .configure()
                    .formatTopText( "EEE" )
                    .formatMiddleText( "dd" )
                    .showBottomText( false )
                    .end()
                    .build();

            horizontalCalendar.getConfig()
                    .setSizeTopText( (float) 12 )
                    .setSizeMiddleText( (float) 25 );

            horizontalCalendar.setCalendarListener( new HorizontalCalendarListener() {
                @Override
                public void onDateSelected(Calendar date, int position) {

                }
            } );
        }




   public void TimePickerView(){


            //Get the widgets reference from XMLayout
            final TextView tv = (TextView) findViewById(R.id.tv);
             tp = (TimePicker) findViewById(R.id.tp);
            Button btn = (Button) findViewById(R.id.btn);

            //Set the TextView text color
                tv.setTextColor(Color.parseColor("#b601fd"));

                btn.setOnClickListener(new View.OnClickListener() {



                @Override
                public void onClick(View v) {
                    int hourOfDay = tp.getCurrentHour(); //Get TimePicker current hour
                    int minute = tp.getCurrentMinute(); //Get TimePicker current minute

                    //Display the TimePicker current time to app interface
                    String AMPM = "AM";
                    if(hourOfDay>11)
                    {
                        //Get the current hour as AM PM 12 hour format
                        hourOfDay = hourOfDay-12;
                        AMPM = "PM";
                    }
                    tv.setText("" + hourOfDay + ":" + minute + ":" + AMPM);
                }
            });

【问题讨论】:

标签: android datepicker timepicker


【解决方案1】:

如果您想禁用通过日期,请使用下面的代码进行日期选择器视图..

datePicker.setMinDate(System.currentTimeMillis() - 1000);

并使用 DatePickerDialog 然后在下面的代码中使用...

datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);

并且您使用以下两种方法使过去的时间和日期不显示...

    /**
 * to display date picker dialog
 */
private void showDatePicker() {
    if (mEventDatePickerDialog == null) {
        if (newCalendar == null) {
            newCalendar = Calendar.getInstance();
        }
        mEventDatePickerDialog = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {

            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {

                newDate = Calendar.getInstance();
                newDate.set(year, monthOfYear, dayOfMonth);
                newCalendar.set(Calendar.YEAR, year);
                newCalendar.set(Calendar.MONTH, monthOfYear);
                newCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                // newCalendar.setTimeInMillis(System.currentTimeMillis());
                showTimePicker();

                //mTvEventDate.setText(dateFormatter.format(newDate.getTime()));
            }
        }, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));
        mEventDatePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
        mEventDatePickerDialog.show();
    } else if (mEventDatePickerDialog != null && !mEventDatePickerDialog.isShowing()) {
        if (newCalendar == null) {
            newCalendar = Calendar.getInstance();
        }
        mEventDatePickerDialog = new DatePickerDialog(getActivity(), new DatePickerDialog.OnDateSetListener() {

            public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {

                newDate = Calendar.getInstance();
                newDate.set(year, monthOfYear, dayOfMonth);
                newCalendar.set(Calendar.YEAR, year);
                newCalendar.set(Calendar.MONTH, monthOfYear);
                newCalendar.set(Calendar.DAY_OF_MONTH, dayOfMonth);
                // newCalendar.setTimeInMillis(System.currentTimeMillis());
                showTimePicker();
                //mTvEventDate.setText(dateFormatter.format(newDate.getTime()));
            }
        }, newCalendar.get(Calendar.YEAR), newCalendar.get(Calendar.MONTH), newCalendar.get(Calendar.DAY_OF_MONTH));
        mEventDatePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);
        mEventDatePickerDialog.show();
    }


}

/**
 * to display time picker dialog
 */
private void showTimePicker() {

    if (newCalendar == null) {
        newCalendar = Calendar.getInstance();
    }

    mEventTimePickerDialog = new TimePickerDialog(getActivity(), new TimePickerDialog.OnTimeSetListener() {
        @Override
        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {
            Calendar datetime = Calendar.getInstance();
            Calendar c = Calendar.getInstance();
            datetime.set(Calendar.MONTH, newCalendar.get(Calendar.MONTH));
            datetime.set(Calendar.DAY_OF_MONTH, newCalendar.get(Calendar.DAY_OF_MONTH));
            datetime.set(Calendar.YEAR, newCalendar.get(Calendar.YEAR));
            datetime.set(Calendar.HOUR_OF_DAY, hourOfDay);
            datetime.set(Calendar.SECOND, 00);
            datetime.set(Calendar.MINUTE, minute);
            mSelectDate = new Date(datetime.getTimeInMillis());
            Date mCurrentDate = new Date(c.getTimeInMillis());

            if (mSelectDate.after(mCurrentDate)) {
                newDate.set(Calendar.HOUR_OF_DAY, hourOfDay);
                newDate.set(Calendar.MINUTE, minute);
                newDate.set(Calendar.SECOND, 00);
                newCalendar.set(Calendar.HOUR_OF_DAY, hourOfDay);
                newCalendar.set(Calendar.MINUTE, minute);
                newCalendar.set(Calendar.SECOND, 00);
                mTvEventDate.setTextColor(ContextCompat.getColor(getActivity(), R.color.black));
                mTvEventDate.setText(dateFormatter.format(newDate.getTime()));
            } else {
                //((BaseActivity) getActivity()).showAlertDialog(getActivity(), getString(R.string.app_name), getString(R.string.time_validation));
                Toast.makeText(this,"your msg",Toast.LENGTH_SHORT).show();
                mTvEventDate.setText(getString(R.string.yyyy_mm_dd_hh_mm_ss));
                mTvEventDate.setTextColor(ContextCompat.getColor(getActivity(), R.color.create_event_hint_color));
            }
        }
    }, newCalendar.get(Calendar.HOUR_OF_DAY), newCalendar.get(Calendar.MINUTE), false);

    mEventTimePickerDialog.show();
}

【讨论】:

  • 我想要日期选择器和时间选择器。我没有使用日期选择器和时间选择器对话框
【解决方案2】:

如果您使用的是 Android DatePicker,那么您可以将最小日期设置为今天的日期,因此今天之前的日期将不会被启用。 你可以使用这个sn-p:

datePicker.setMinDate(new Date().getTime());

如果您使用的是 DatePickerDialog:

datePickerDialog.getDatePicker().setMinDate(new Date().getTime());

【讨论】:

  • TimePickerDialog 的问题不是DatePickerDialog 的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-09-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多