Introduction:
Android Date Picker helps you to select the date with day, month and year in your Layout/User Interface. Android provides you two classes DatePicker and DatePickerDialog to implement the functionality. You can set the date like below:
Let’s look into the example on how to implement it.
In this example, you will see how to set a date. When you click on ImageButton it should open a dialog box with today’s date and while clicking on “Set” it will set the value in EditText.
activity_main.xml
Add ImageButton in your xml file.
1 2 3 4 5 6 7 8 9 |
<ImageButton android:id="@+id/imageButton1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignBottom="@+id/editText" android:layout_toRightOf="@+id/editText" android:contentDescription="@string/selectdate" android:cropToPadding="true" android:src="@drawable/calendar_icon" /> |
MainActivity.java
Add below code in onCreate(){..}
1 2 3 4 5 6 7 8 |
ib = (ImageButton) findViewById(R.id.editText); cal = Calender.getInstance(); day = cal.get(Calender.DAY_OF_MONTH); month=cal.get(Calender.MONTH); year = cal.get(Calender.YEAR); et= (EditText) findViewById(R.id.editText); ib.setOnClickListener(this); |
Create onClick(){..} and add one line code :
1 2 3 4 5 6 |
showDialog(0); private DatePickerDialog.OnDateSetListener datePickerListener = new DatePickerDialog.OnDateSetListener() { public void onDateSet(DatePicker view, int selectedYear, int selectedMonth, int selectedDay) { et.setText(selectedDay + “/” + (selectedMonth + 1) + “/” + selectedYear); }); } |
Output :
Download Project Link :
https://github.com/hiteshbpatel/Android_Projects/tree/master/AndroidDatePicker/
How to set Minimum and Maximum Date in DatePicker :
In Contribution with above example we will see how to set minimum and maximum Date in Date Picker.
Add a Button in activity_main.xml.
1 2 3 4 5 |
<Button android:id="@+id/btn" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Set Date" android:layout_below="@id/tv" /> |
MainActivity.java
Write a logic for button’s setOnClickListener(){..} . When event triggers then a Dialog with DatePicker will be shown to the user.
1 2 3 4 5 6 7 |
btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { DialogFragment dFragment = new DatePickerFragment(); dFragment.show(getFragmentManager(), "Date Picker"); } }); |
Create a Fragment class – DatePickerFragment, extend it with DialogFragment & implement it with DatePickerDialog.OnDateSetListener class :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
public static class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener{ @Override public Dialog onCreateDialog(Bundle savedInstanceState){ final Calendar calendar = Calendar.getInstance(); int year = calendar.get(Calendar.YEAR); int month = calendar.get(Calendar.MONTH); int day = calendar.get(Calendar.DAY_OF_MONTH); DatePickerDialog dpd = new DatePickerDialog(getActivity(), AlertDialog.THEME_HOLO_LIGHT,this,year,month,day); calendar.add(Calendar.DATE, 3); dpd.getDatePicker().setMaxDate(calendar.getTimeInMillis()); calendar.add(Calendar.DATE, -6); dpd.getDatePicker().setMinDate(calendar.getTimeInMillis()); return dpd; } |
Now create a new method onDateSet(){..} and add some code to it.
1 2 3 4 5 6 7 8 9 |
public void onDateSet(DatePicker view, int year, int month, int day) { TextView tv = (TextView) getActivity().findViewById(R.id.tv); Calendar cal = Calendar.getInstance(); cal.setTimeInMillis(0); cal.set(year, month, day, 0, 0, 0); Date chosenDate = cal.getTime(); DateFormat df = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.US); String formattedDate = df.format(chosenDate); tv.setText(formattedDate); } |
Output :
Download Project Link :
https://github.com/hiteshbpatel/Android_Projects/tree/master/DatePickerDemo
Leave a Reply