我已创建此自定义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) {
}
}