首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在android中禁用past time on time time

如何在android中禁用past time on time time
EN

Stack Overflow用户
提问于 2018-03-09 19:00:34
回答 2查看 6.3K关注 0票数 4

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

代码语言:javascript
运行
复制
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);
                }
            });
EN

回答 2

Stack Overflow用户

发布于 2018-03-09 19:43:25

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

代码语言:javascript
运行
复制
datePicker.setMinDate(System.currentTimeMillis() - 1000);

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

代码语言:javascript
运行
复制
datePickerDialog.getDatePicker().setMinDate(System.currentTimeMillis() - 1000);

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

代码语言:javascript
运行
复制
    /**
 * 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();
}
票数 -1
EN

Stack Overflow用户

发布于 2018-03-09 19:45:34

如果您使用的是Android DatePicker,那么您可以将最小日期设置为今天的日期,因此不会启用今天之前的日期。您可以使用以下代码片段:

代码语言:javascript
运行
复制
datePicker.setMinDate(new Date().getTime());

否则,如果您使用的是DatePickerDialog:

代码语言:javascript
运行
复制
datePickerDialog.getDatePicker().setMinDate(new Date().getTime());
票数 -3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49192274

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档