У меня была такая же проблема, я нашел этот ответ полезным, но это для родного андроида, мне пришлось сделать некоторые изменения для Xamarin.Forms Android, создать пользовательский рендерер и добавить следующие строки:
protected override DatePickerDialog CreateDatePickerDialog(int year, int month, int day)
{
var dialog = base.CreateDatePickerDialog(year, month, day);
dialog.Show();
OrderDate(dialog, new char[] { 'd', 'm', 'y' });
return dialog;
}
private void OrderDate(DatePickerDialog dialog, char[] ymdOrder)
{
if (!dialog.IsShowing)
{
return;
}
int idYear = Resources.GetIdentifier("year", "id", "android");
int idMonth = Resources.GetIdentifier("month", "id", "android");
int idDay = Resources.GetIdentifier("day", "id", "android");
int idLayout = Resources.GetIdentifier("pickers", "id", "android");
NumberPicker spinnerYear = (NumberPicker)dialog.FindViewById(idYear);
NumberPicker spinnerMonth = (NumberPicker)dialog.FindViewById(idMonth);
NumberPicker spinnerDay = (NumberPicker)dialog.FindViewById(idDay);
LinearLayout layout = (LinearLayout)dialog.FindViewById(idLayout);
layout.RemoveAllViews();
for (int i = 0; i < SPINNER_COUNT; i++)
{
switch (ymdOrder[i])
{
case 'y':
layout.AddView(spinnerYear);
setImeOptions(spinnerYear, i);
break;
case 'm':
layout.AddView(spinnerMonth);
setImeOptions(spinnerMonth, i);
break;
case 'd':
layout.AddView(spinnerDay);
setImeOptions(spinnerDay, i);
break;
}
}
}
private void setImeOptions(NumberPicker spinner, int spinnerIndex)
{
ImeAction imeOptions;
if (spinnerIndex < SPINNER_COUNT - 1)
{
imeOptions = inputMethos.ImeAction.Next;
}
else
{
imeOptions = inputMethos.ImeAction.Done;
}
int idPickerInput = Resources.GetIdentifier("numberpicker_input", "id", "android");
TextView input = (TextView)spinner.FindViewById(idPickerInput);
input.SetImeActionLabel("",imeOptions);
}