This is what you can do:
Styles.xml
<style name="CustomDatePickerDialog" parent="Theme.AppCompat.Light.Dialog.Alert">
<item name="android:dialogTheme">@style/MyDialogTheme</item>
<item name="android:datePickerStyle">@style/MyDatePicker</item>
</style>
<style name="MyDialogTheme" parent="Theme.AppCompat.Light.Dialog">
<item name="android:datePickerStyle">@style/MyDatePicker</item>
</style>
<style name="MyDatePicker" parent="@android:style/Widget.Material.DatePicker">
<item name="android:datePickerMode">spinner</item>
</style>
Define a new class, which represents a DialogFragment where your DatePicker will be presented:
public class DatePickerFragment extends DialogFragment implements DatePickerDialog.OnDateSetListener {
private final Calendar c = Calendar.getInstance();
private DatePickerListener listener;
public DatePickerFragment() {
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
int customStyle = -1;
Bundle arguments = getArguments();
if (arguments != null)
customStyle = arguments.getInt("customStyle", -1);
int year = c.get(Calendar.YEAR);
int month = c.get(Calendar.MONTH);
int day = c.get(Calendar.DAY_OF_MONTH);
if (customStyle != -1)
return new DatePickerDialog(getActivity(), customStyle, this, year, month, day);
else
return new DatePickerDialog(getActivity(), this, year, month, day);
}
@Override
public void onDateSet(DatePicker view, int year, int month, int dayOfMonth) {
if (listener != null) {
SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy", Locale.US);
c.set(Calendar.YEAR, year);
c.set(Calendar.MONTH, month);
c.set(Calendar.DAY_OF_MONTH, dayOfMonth);
String data = sdf.format(c.getTime());
listener.onDatePicked(data);
}
}
public void setDatePickerListener(DatePickerListener listener) {
this.listener = listener;
}
public interface DatePickerListener {
void onDatePicked(String date);
}
}
In your activity or fragment, add a new method to bind the click event to your TextView:
private void setDatePicker(final TextView textView) {
textView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
DatePickerFragment newFragment = new DatePickerFragment();
Bundle b = new Bundle();
b.putInt("customStyle", R.style.CustomDatePickerDialog);
newFragment.setArguments(b);
newFragment.setDatePickerListener(new DatePickerFragment.DatePickerListener() {
@Override
public void onDatePicked(String date) {
textView.setText(date);
}
});
newFragment.show(getFragmentManager(), "datePicker");
}
});
}
and finally, in the onCreate() method, configure the TextView which should receive the selected date:
dataNascText = v.findViewById(R.id.dataNascText);
setDatePicker(dataNascText);