L'image ci-dessous montre le sélecteur de date actuel que j'ai dans mon application Android, mais je souhaite afficher tous les mois sous la forme 01, 02, 03 ... 12 au lieu de janvier, février, mars ... décembre. p>
Toute aide serait grandement appréciée !!
3 Réponses :
Vous pouvez utiliser le sélecteur de nombres pour y parvenir:
1) Créez un tableau de chaînes:
private void setNubmerPicker(NumberPicker nubmerPicker,String [] numbers ){ nubmerPicker.setMaxValue(numbers.length-1); nubmerPicker.setMinValue(0); nubmerPicker.setWrapSelectorWheel(true); nubmerPicker.setDisplayedValues(numbers); }
2) créer une méthode pour créer un sélecteur de numéros avec des valeurs personnalisées:
String mValues[] = { "01","02","03","04","05","06","07","08","09","10","11","12"};
3) appelez votre méthode de sélection de numéros avec vos valeurs personnalisées:
setNubmerPicker (yourNumberPicker, mValues);
Les avantages du sélecteur de nombres:
Vous pouvez créer votre propre Dialogue
avec NumberPicker
, mais si vous souhaitez toujours utiliser DatePickerDialog
, cela devrait fonctionner:
DatePickerDialog mDatePicker = new DatePickerDialog(MainActivity.this, android.R.style.Theme_Holo_Light_Dialog, new DatePickerDialog.OnDateSetListener() { public void onDateSet(DatePicker view, int selectedyear, int selectedmonth, int selectedday) { // Stuff } }, mYear, mMonth, mDayOfMonth) { final int month = getContext().getResources().getIdentifier("android:id/month", null, null); final String[] monthNumbers = new String[]{ "01","02","03","04","05","06","07","08","09","10","11","12"} @Override public void onDateChanged(@NonNull DatePicker view, int y, int m, int d) { super.onDateChanged(view, y, m, d); // Since DatePickerCalendarDelegate updates the month spinner too, we need to change months as numbers here also if(month != 0){ NumberPicker monthPicker = findViewById(month); if(monthPicker != null){ monthPicker.setDisplayedValues(monthNumbers); } } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // Hide day spinner int day = getContext().getResources().getIdentifier("android:id/day", null, null); if(day != 0){ NumberPicker dayPicker = findViewById(day); if(dayPicker != null){ dayPicker.setVisibility(View.GONE); } } // Show months as Numbers if(month != 0){ NumberPicker monthPicker = findViewById(month); if(monthPicker != null){ monthPicker.setDisplayedValues(monthNumbers); } } } }; mDatePicker.setTitle("Select Date"); mDatePicker.show();
J'ai utilisé la réponse @Dispew, mais j'ai eu monthPicker comme null, donc j'ai changé ceci:
NumberPicker monthPicker = mDatePicker.findViewById((Resources.getSystem().getIdentifier("month", "id", "android"))); if (monthPicker != null){ monthPicker.setDisplayedValues(monthNumbers); }
en ceci:
final int month = getContext().getResources().getIdentifier("android:id/month", null, null); // Show months as Numbers if(month != 0){ NumberPicker monthPicker = findViewById(month); if(monthPicker != null){ monthPicker.setDisplayedValues(monthNumbers); } }
p >
Essayez d'utiliser ceci: https://stackoverflow.com/questions/11736447/android-date -pi cker-month-as-number