I feel this is a much better implementation. Also, consider duskwuff's comment on the OP. This can make days not appear correctly.
date_picker
<?xml version="1.0" encoding="utf-8"?>
<DatePicker xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/datePickerNoYear"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
CustomDatePickerDialog.java
public class DatePickerDialogNoYear extends DatePickerDialog {
public DatePickerDialogNoYear(Context context, OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth) {
super(context, callBack, year, monthOfYear, dayOfMonth);
hideYear();
}
public DatePickerDialogNoYear(Context context, int theme, OnDateSetListener listener, int year, int monthOfYear, int dayOfMonth) {
super(context, theme, listener, year, monthOfYear, dayOfMonth);
hideYear();
}
@Override
public void setView(View view, int viewSpacingLeft, int viewSpacingTop, int viewSpacingRight, int viewSpacingBottom) {
view = findViewById(R.id.datePickerNoYear);
super.setView(view, viewSpacingLeft, viewSpacingTop, viewSpacingRight, viewSpacingBottom);
}
private void hideYear() {
try {
Field f[] = this.getClass().getDeclaredFields();
for (Field field : f) {
if (field.getName().equals("mYearPicker")) {
field.setAccessible(true);
((View) field.get(this)).setVisibility(View.GONE);
}
}
} catch (SecurityException | IllegalArgumentException | IllegalAccessException e) {
Log.d("ERROR", e.getMessage());
}
}
}
Then just use it like any other DatePickerDialog
. Good luck!