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