Android自定义日期时间选择器会在今天的日期之前禁用日期

时间:2016-02-10 03:42:12

标签: android android-fragments calendar datetimepicker android-dialogfragment

我已创建此自定义DialogFragment以选择日期和时间,但我不知道如何在今天的日期之前禁用日期以及仅显示7天Ex。如果今天10日元然后在10日之前禁用所有日期,并且只显示日期10,11,12,14,15,16,17,这同样适用于当前时间之前的停机时间禁用时间。

我知道我必须在getDatesFromCalendar()方法中进行一些更改,或者有办法根据当前日期和时间验证日期和时间。

 public class DatePickerFragment extends DialogFragment implements View.OnClickListener {

 String dates[];
 NumberPicker datePicker, hourPicker, minutePicker;
 Button doneButton, currentTimeButton;
 Calendar rightNow = Calendar.getInstance();


 @Override
 public void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     dates = getDatesFromCalender();

 }

 @Override
 public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
     Dialog getDialog = new Dialog(getActivity());
     View view = inflater.inflate(R.layout.custom, container);
     datePicker = (NumberPicker) view.findViewById(R.id.datePicker);
     hourPicker = (NumberPicker) view.findViewById(R.id.hourPicker);
     minutePicker = (NumberPicker) view.findViewById(R.id.minutePicker);
     doneButton = (Button) view.findViewById(R.id.doneButton);
     currentTimeButton = (Button) view.findViewById(R.id.currentTimeButton);
     datePicker.setMinValue(0);
     datePicker.setMaxValue(dates.length - 1);
     datePicker.setFormatter(new NumberPicker.Formatter() {

         @Override
         public String format(int value) {
             return dates[value];
         }
     });

     datePicker.setDisplayedValues(dates);
     hourPicker.setMinValue(0);
     hourPicker.setMaxValue(23);
     hourPicker.setValue(rightNow.get(Calendar.HOUR_OF_DAY));
     minutePicker.setMinValue(0);
     minutePicker.setMaxValue(59);
     minutePicker.setValue(rightNow.get(Calendar.MINUTE));
     doneButton.setOnClickListener(this);
     currentTimeButton.setOnClickListener(this);
     getDialog.setTitle("choose_time");
     return view;
 }

 private String[] getDatesFromCalender() {
     Calendar c1 = Calendar.getInstance();
     Calendar c2 = Calendar.getInstance();

     List<String> dates = new ArrayList<String>();
     DateFormat dateFormat = new SimpleDateFormat("EEE, dd MMM");
     dates.add(dateFormat.format(c1.getTime()));

     for (int i = 0; i < 60; i++) {
         c1.add(Calendar.DATE, 1);
         dates.add(dateFormat.format(c1.getTime()));
     }
     c2.add(Calendar.DATE, -60);

     for (int i = 0; i < 60; i++) {
         c2.add(Calendar.DATE, 1);
         dates.add(dateFormat.format(c2.getTime()));
     }
     return dates.toArray(new String[dates.size() - 1]);
 }

 @Override
 public void onClick(View v) {
     Bundle args = new Bundle();
     if (v.getId() == R.id.doneButton) {
         //Handle selected time and date
         Toast.makeText(getActivity(), "", Toast.LENGTH_SHORT).show();
     } else if (v.getId() == R.id.currentTimeButton) {

     }

 }

这就是我的要求Click here to see the screen shot

0 个答案:

没有答案