android:TimePickerDialog 防止用户选择过去的时间,并可以选择未来的时间与新的日期

Posted

技术标签:

【中文标题】android:TimePickerDialog 防止用户选择过去的时间,并可以选择未来的时间与新的日期【英文标题】:android: TimePickerDialog prevent user select past time and can select future time with new date 【发布时间】:2017-05-21 06:37:34 【问题描述】:

我正在使用此链接android TimePickerDialog set max time。

我是安卓新手。在此代码的帮助下,我无法选择过去的时间,但我们无法选择未来的时间。当在 timepickerdialog 模式中选择 12 时,根据第二天而不是过去一天自动更改为 am。

【问题讨论】:

我是安卓新手。我正在完成这项任务。 首先阅读此链接***.com/help/how-to-ask。在当前情况下,完全不清楚您要完成什么以及您的问题是什么。所以先根据链接编辑你的问题,让它更清晰准确 @VivekMishra 他问了这个问题,这个问题很正常。 TimePickerDialog中的TimePicker在onTimeChanged后不改变当前小时和分钟的主要问题。 @AtifAmin 所以你想禁用所有过去的时间表单时间选择器? @rafsanahmad007 是的,但是他们可以选择未来的时间和新的日期?? 【参考方案1】:

试试这个代码:

TimePickerFragment timePickerFragment = new TimePickerFragment();
            timePickerFragment.setOnTimeSetListener(new OnTimeSetListener() 
                public void onTimeSet(TimePicker view, int hourOfDay, int minute) 
                    Calendar datetime = Calendar.getInstance();
                    Calendar c = Calendar.getInstance();
                    datetime.set(Calendar.HOUR_OF_DAY, hourOfDay);
                    datetime.set(Calendar.MINUTE, minute);
                    if (datetime.getTimeInMillis() >= c.getTimeInMillis()) 
                        //it's after current
                         int hour = hourOfDay % 12;
                    btnPickStartTime.setText(String.format("%02d:%02d %s", hour == 0 ? 12 : hour,
                            minute, hourOfDay < 12 ? "am" : "pm"));
                     else 
                        //it's before current'
                        Toast.makeText(getApplicationContext(), "Invalid Time", Toast.LENGTH_LONG).show();
                    
                
            );
            timePickerFragment.show(getSupportFragmentManager(), "TIME");

它将显示timepicker 对话框,如果用户选择当前时间之前的任何时间...它将显示无效时间..

编辑 您需要导入:

import android.app.TimePickerDialog;
import android.app.Fragment;
import android.app.DialogFragment;
import java.util.Calendar;
import android.widget.TimePicker;

这是一个很好的Example

【讨论】:

这里的时间选择器片段是什么,代码sn-p在哪里@rafsanahmad007 @Jeyaseelan 我已编辑答案以包含导入语句 非常感谢@rafsanahmad007,但我以另一种方式做到了【参考方案2】:

您最好的解决方案是使用this材料设计库来选择时间或日期并设置最小值。

    TimePickerDialog tpd = TimePickerDialog.newInstance(
        new TimePickerDialog.OnTimeSetListener() 
            @Override
            public void onTimeSet(TimePickerDialog view, int hourOfDay, int minute, int second) 
                //put some interesting code
            
        ,
        now.get(Calendar.HOUR_OF_DAY),
        now.get(Calendar.MINUTE),
        true
    );
    tpd.setMinTime(10, 0, 0); // MIN: hours, minute, secconds
    tpd.show(getFragmentManager(), "TimePickerDialog");

将 Material DateTime Picker 库添加到您的项目的最简单方法是将其作为依赖项添加到您的 build.gradle

dependencies 
    compile 'com.wdullaer:materialdatetimepicker:3.0.0'

希望这会对你有所帮助。

【讨论】:

以上是关于android:TimePickerDialog 防止用户选择过去的时间,并可以选择未来的时间与新的日期的主要内容,如果未能解决你的问题,请参考以下文章

Android DatePickerDialog和TimePickerDialog显示样式

如何在Android中设置自定义分钟间隔TimePickerDialog

如何在android中设置自定义分钟间隔timepickerdialog

有没有办法在 Android JellyBean TimePickerDialog 中使用取消?

android:TimePickerDialog 防止用户选择过去的时间,并可以选择未来的时间与新的日期

Android日期时间控件DatePickerDialog和TimePickerDialog