2
votes

Afficher les champs du mois dans DatePickerDialog au format numérique au lieu de l'alphabet

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.

Toute aide serait grandement appréciée !!

 entrez la description de l'image ici


3 Réponses :


0
votes

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:

  • Ajouté au niveau d'API 11 afin que vous puissiez l'utiliser sur tous vos appareils.
  • Vous n'avez pas besoin d'ouvrir une boîte de dialogue, cela gardera votre application plus simple (imaginez que vous vouliez passer une commande et pour chaque petit détail que vous deviez ouvrir une boîte de dialogue) et bien sûr si vous le souhaitez, vous pouvez mettre votre sélecteur de numéro dans la boîte de dialogue à chaque fois.
  • Si vous utilisez ma réponse, vous pouvez utiliser des caractères Unicode dans votre tableau de données (dans mon cas - mValues), je pense que cela peut vraiment être un ajout intéressant avec presque aucun effort.


0 commentaires

2
votes

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();


0 commentaires

0
votes

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 >


0 commentaires