Отображение полей месяца в DatePickerDialog в числовом формате вместо алфавитного

1

На рисунке ниже показан текущий выбор даты в моем приложении для Android, однако я хочу отображать все месяцы как 01, 02, 03... 12 вместо января, февраля, марта... декабря.

Любая помощь будет принята с благодарностью!

Изображение 174551

Теги:
datepicker

2 ответа

0

Вы можете создать свой собственный Dialog с NumberPicker, но если вы все еще хотите использовать DatePickerDialog, это должно работать:

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

Вы можете использовать средство выбора номера для достижения этой цели:

1) Создайте массив строк:

String mValues[] = { "01","02","03","04","05","06","07","08","09","10","11","12"};

2) создать метод для создания числового палитры с пользовательскими значениями:

private void setNubmerPicker(NumberPicker nubmerPicker,String [] numbers ){
nubmerPicker.setMaxValue(numbers.length-1);
nubmerPicker.setMinValue(0);
nubmerPicker.setWrapSelectorWheel(true);
nubmerPicker.setDisplayedValues(numbers);
}

3) вызовите метод выбора номера с вашими пользовательскими значениями:

setNubmerPicker(yourNumberPicker,mValues);

Преимущества выбора номера:

  • Добавлен в API уровня 11, чтобы вы могли использовать его на всех ваших устройствах.
  • Вам не нужно открывать диалоговое окно, оно сделает ваше приложение более простым (представьте, что вы хотите сделать заказ, и для каждой маленькой детали, которую вы должны были открыть в диалоговом окне) и, конечно, если вы хотите, вы можете поставить свой инструмент выбора номера. внутри диалога каждый раз.
  • Если вы воспользуетесь моим ответом, вы можете использовать символы Unicode внутри массива данных (в моем случае - mValues), я думаю, что это действительно может быть хорошим дополнением практически без усилий.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню