Android DatePicker change to only Month and Year
android, date, dialog
Solution
Try the following code. It will show a `DatePicker` with only the year and month (without day)
private DatePickerDialog createDialogWithoutDateField() {
DatePickerDialog dpd = new DatePickerDialog(this, null, 2014, 1, 24);
try {
java.lang.reflect.Field[] datePickerDialogFields = dpd.getClass().getDeclaredFields();
for (java.lang.reflect.Field datePickerDialogField : datePickerDialogFields) {
if (datePickerDialogField.getName().equals("mDatePicker")) {
datePickerDialogField.setAccessible(true);
DatePicker datePicker = (DatePicker) datePickerDialogField.get(dpd);
java.lang.reflect.Field[] datePickerFields = datePickerDialogField.getType().getDeclaredFields();
for (java.lang.reflect.Field datePickerField : datePickerFields) {
Log.i("test", datePickerField.getName());
if ("mDaySpinner".equals(datePickerField.getName())) {
datePickerField.setAccessible(true);
Object dayPicker = datePickerField.get(datePicker);
((View) dayPicker).setVisibility(View.GONE);
}
}
}
}
}
catch (Exception ex) {
}
return dpd;
}
This method returns a date picker dialog. So , in your button's `onClick` method add the following code to display your dialog.
createDialogWithoutDateField().show();
Problem
I have a DatePickerDialog and I want view only Month and Year. How can I change this code? ``` public void chooseDate2(View v) { new DatePickerDialog( act.this, d1, dateAndTime1.get(Calendar.YEAR) + 2, dateAndTime1.get(Calendar.MONTH), dateAndTime1.get(Calendar.DAY_OF_MONTH) ).show(); } private void updateLabel2() { scadenza.setText(fmtDateAndTime.format(dateAndTime1.getTime())); } DatePickerDialog.OnDateSetListener d1=new DatePickerDialog.OnDateSetListener() { public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { dateAndTime1.set(Calendar.YEAR, year); dateAndTime1.set(Calendar.MONTH, monthOfYear); dateAndTime1.set(Calendar.DAY_OF_MONTH, dayOfMonth); updateLabel2(); } }; ``` Thanks