我正在开发一个应用程序,我正在使用自定义日期和时间选择器.
我已经创建了一个对话框,里面我现在分别显示日期和时间选择器,我想设置日期选择器的最小和最大限制.
例如,一个人不应该从今天开始选择前一个日期,也不能超过一个月.
这是我的代码
我已经创建了一个对话框,里面我现在分别显示日期和时间选择器,我想设置日期选择器的最小和最大限制.
例如,一个人不应该从今天开始选择前一个日期,也不能超过一个月.
这是我的代码
AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); final DatePicker picker = new DatePicker(getActivity()); try { Field f[] = picker.getClass().getDeclaredFields(); for (Field field : f) { if (field.getName().equals("mYearPicker") || field.getName().equals("mYearSpinner")) { field.setAccessible(true); Object yearPicker = new Object(); yearPicker = field.get(picker); ((View) yearPicker).setVisibility(View.GONE); } } } catch (Exception ex) { ex.printStackTrace(); } picker.setCalendarViewShown(false); picker.setMinDate(new Date().getTime()); builder.setTitle("Please select date on which you would be leaving :") .setView(picker) .setPositiveButton("OK",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int whichButton) { SimpleDateFormat parseFormat = new SimpleDateFormat("EEE dd MMM"); Date date1 = new Date(); date1.setDate(picker.getDayOfMonth()); date1.setMonth(picker.getMonth()); final String s = parseFormat.format(date1); Log.e("DATE",s); SimpleDateFormat sdf=new SimpleDateFormat("MM-dd-yyyy"); Date date2=new Date(); date2.setDate(picker.getDayOfMonth()); date2.setMonth(picker.getMonth()); final String s2=sdf.format(date2); //Time picker AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); final TimePicker picker = new TimePicker(getActivity()); picker.setIs24HourView(true); builder.setTitle("Please select time at which you would be leaving :") .setView(picker) .setPositiveButton("OK",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int whichButton) { int hour = picker.getCurrentHour(); int minute = picker.getCurrentMinute(); leaving.setTextSize(14); leaving.setText(s + " " + hour + ":" + minute); inTime=s2+" "+hour+":"+minute; Log.e("inTime ",inTime); } }) .setNegativeButton("Cancel",new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog,int whichButton) { leaving.setText(""); inTime=""; dialog.dismiss(); } }).create().show(); //Time picker } } ) .setNegativeButton("Cancel",int whichButton) { leaving.setText(""); inTime=""; dialog.dismiss(); } } ) .create().show();
请帮忙.谢谢
解决方法
试试这个,这从今天到datepicker对话框中的下一个5年日期显示.
public class MainActivity extends Activity { TextView txtDatePicker; Calendar cal,cal1; long maxDate; Date date; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); cal = Calendar.getInstance(); cal1 = Calendar.getInstance(); txtDatePicker = (TextView) findViewById(R.id.txtDatePicker); txtDatePicker.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { // TODO Auto-generated method stub DatePickerDialog dialog = new DatePickerDialog(MainActivity.this,new OnDateSetListener() { @Override public void onDateSet(DatePicker arg0,int arg1,int arg2,int arg3) { // TODO Auto-generated method stub Toast.makeText(MainActivity.this,""+arg1+"/"+(arg2+1)+"/"+arg3,Toast.LENGTH_SHORT).show(); } },cal.get(Calendar.YEAR),cal.get(Calendar.MONTH),cal.get(Calendar.DAY_OF_MONTH)); dialog.getDatePicker().setMinDate(System.currentTimeMillis()); cal1.add(Calendar.YEAR,5); dialog.getDatePicker().setMaxDate(cal1.getTimeInMillis()); dialog.show(); } }); } }