android - 如何在android中的计时器选择器对话框中禁用过去时间

标签 android android-timepicker

这是我的代码。请解释我如何使用时间选择器对话框禁用过去时间,并提供一些代码如何在此代码中禁用过去时间以及如何使用 android 时间选择器对话框应用它。时间选择器对话框类没有任何 setMinTime 方法以及如何获取它。

time.setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            Calendar mcurrentTime = Calendar.getInstance();
            int hour = mcurrentTime.get(Calendar.HOUR_OF_DAY);
            int minute = mcurrentTime.get(Calendar.MINUTE);

            TimePickerDialog mTimePicker;

            mTimePicker = new TimePickerDialog(
                    FillServiceDetailActivity.this,
                    new TimePickerDialog.OnTimeSetListener() {
                        @Override
                        public void onTimeSet(TimePicker timePicker,
                                              int selectedHour, int selectedMinute) {
                            String AM_PM;
                            int hour;
                            String[] sp=currentTime.split(":");

                            int hour1=Integer.parseInt(sp[0]);
                            int min1=Integer.parseInt(sp[1]);
                            //Toast.makeText(FillServiceDetailActivity.this,"selected hour:\t"+String.valueOf(selectedHour),Toast.LENGTH_LONG).show();
                            String timeSet = "";
                            if (selectedHour > 12 && hour1>12) {
                                selectedHour -= 12;
                                hour1-=12;
                                timeSet = "PM";
                            } else if (selectedHour == 0) {
                                selectedHour += 12;

                                timeSet = "AM";
                            } else if (selectedHour == 12)

                                timeSet = "PM";
                            else
                                timeSet = "AM";


                            String minutes = "";
                            if (selectedMinute < 10)
                                minutes = "0" + selectedMinute;
                            else
                                minutes = String.valueOf(selectedMinute);

                            /*if(selectedHour>12) {

                                hour = selectedHour - 12;
                                    AM_PM = "PM";

                            }   else  if(selectedHour==12)
                            {
                                hour=selectedHour;
                                AM_PM="PM";
                            }
                            else {
                                hour=selectedHour;
                                AM_PM="AM";
                            }*/

                            //Toast.makeText(FillServiceDetailActivity.this,String.valueOf(hour1),Toast.LENGTH_LONG).show();
                            //Toast.makeText(FillServiceDetailActivity.this,String.valueOf(selectedHour),Toast.LENGTH_LONG).show();

                                time.setText(selectedHour + ":" + minutes + "\t" + timeSet);




                        }
                    }, hour, minute, false);// Yes 24 hour time
            mTimePicker.setTitle("Select Time");

            mTimePicker.show();


        }
    });

感谢任何帮助。谢谢

最佳答案

有关更多信息,请访问此 page .

使用这个库。

enter image description here

依赖性

 dependencies {
      compile 'com.wdullaer:materialdatetimepicker:2.3.0'
    }

用它来显示对话框

Calendar now = Calendar.getInstance();
                TimePickerDialog tpd = TimePickerDialog.newInstance(
                        MainActivity.this,
                        now.get(Calendar.HOUR_OF_DAY),
                        now.get(Calendar.MINUTE),
                        mode24Hours.isChecked()
                );
                tpd.setThemeDark(modeDarkTime.isChecked());
                tpd.vibrate(vibrateTime.isChecked());
                tpd.dismissOnPause(dismissTime.isChecked());
                tpd.enableSeconds(enableSeconds.isChecked());
                if (modeCustomAccentTime.isChecked()) {
                    tpd.setAccentColor(Color.parseColor("#9C27B0"));
                }
                if (titleTime.isChecked()) {
                    tpd.setTitle("TimePicker Title");
                }
                if (limitTimes.isChecked()) {
                    tpd.setTimeInterval(2, 5, 10);
                }
                tpd.setOnCancelListener(new DialogInterface.OnCancelListener() {
                    @Override
                    public void onCancel(DialogInterface dialogInterface) {
                        Log.d("TimePicker", "Dialog was cancelled");
                    }
                });
                tpd.show(getFragmentManager(), "Timepickerdialog");

当用户选择时间时从对话框中获取时间。

@Override
public void onTimeSet(RadialPickerLayout view, int hourOfDay, int minute) {
  String time = "You picked the following time: "+hourOfDay+"h"+minute;
  timeTextView.setText(time);
}

用它来设置最短时间

setMinTime(Timepoint time)

例子

tpd.setMinTime(now2.get(Calendar.HOUR_OF_DAY),now2.get(Calendar.MINUTE),
                        now2.get(Calendar.SECOND));

在上面的示例中,MinTime 是当前时间。

方法setMinTime有三个参数小时、分钟、秒;

setMinTime(5,0,0);//通过使用此 minTime 设置为 5 点钟。

关于android - 如何在android中的计时器选择器对话框中禁用过去时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37235258/

相关文章:

android - 如何向 Galaxy S3 上的溢出菜单添加操作?

android - Datepicker 和 Timepicker 文本不出现在 Android 5.1.1

android - 是否可以更改 Android L TimePickerDialog 的样式?

android - AlarmManager、TimePicker 和 Wifi 控制。如何?

android - 将动态线性布局添加到当前 View android

android - 在UI测试期间启动后,应用程序关闭

java - 如何删除显示应用程序名称的标题而不是标题栏本身?

javascript - 单击行时无法转到新 Activity

Android:日期和时间选择器 UI 上的不同外观

java - Samsung S4 OS 4.3 上的时间选择器对话框崩溃