DatePickerDialog месяц, который будет показан как число (январь как 1) - PullRequest
1 голос
/ 24 марта 2020

Я должен показать номер месяца вместо названия месяца в DatePickerDialog. Пример: февраль как 02, май как 05 Какой самый простой способ сделать это?

Тема, которую я сейчас использую - THEME_HOLO_LIGHT.

enter image description here

1 Ответ

0 голосов
/ 24 марта 2020
public class NewDatePicker extends DatePicker {

public NewDatePicker(Context context, AttributeSet attrs) {
    super(context, attrs);
    Field[] fields = DatePicker.class.getDeclaredFields();
    try {
        for (Field field : fields) {
            field.setAccessible(true);
            if (TextUtils.equals(field.getName(), "mMonthPicker")) {
                Method m = field.getType().getDeclaredMethod("setRange", int.class, int.class, String[].class);
                m.setAccessible(true);
                String[] s = new String[] {"01","02","03","04","05","06","07","08","09","10","11","12"};
                m.invoke(field.get(this), 1, 12, s);
                break;
            }
        }
    }
    catch (Exception e) {
        System.out.println(e.getMessage());
        e.printStackTrace();
    }
}
}

public NewDatePicker(Context context, AttributeSet attrs) {
super(context, attrs);
Field[] fields = DatePicker.class.getDeclaredFields();
try {
    String[] s = new String[] {"01","02","03","04","05","06","07","08","09","10","11","12"};
    for (Field field : fields) {
        field.setAccessible(true);
        if (TextUtils.equals(field.getName(), "mMonthSpinner")) {
            NumberPicker monthPicker = (NumberPicker) field.get(this);
            monthPicker.setDisplayedValues(s);
        } 
        if (TextUtils.equals(field.getName(), "mShortMonths")) {
            field.set(this, s);
        }
    }
}
catch (Exception e) {
    System.out.println(e.getMessage());
    e.printStackTrace();
}
}

используйте вот так

 <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >

<my.pkg.NewDatePicker
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" />
</LinearLayout>
...