Отображение полей месяца в DatePickerDialog в числовом формате вместо алфавитного - PullRequest
1 голос
/ 15 марта 2019

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

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

enter image description here

Ответы [ 2 ]

0 голосов
/ 16 марта 2019

Вы можете создать свой собственный 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 голосов
/ 15 марта 2019

Для этого можно использовать средство выбора чисел:

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), я думаю, что это действительно может быть хорошим дополнением практически без усилий.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...