Android DatePicker month as integer
Eu tenho uma pergunta simples, mas depois de pesquisar um pouco, não consegui encontrar a resposta ainda. Em um DatePicker, é possível alterar o mês a ser exibido como um inteiro e não como uma string? .Eg: {1,2,3 ..} not {jan, feb, mar ...}
EDITAR:
Embora a solução @ kaneda parece funcionar, no android 3.0, pelo menos, os métodos e atributos não são os mesmos. O código que estou usando é o seguinte:
<code>public DatePickerCustom(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(), "mMonthSpinner")) { Method m = field.getType().getDeclaredMethod("setDisplayedValues", String[].class); m.setAccessible(true); String[] s = new String[] {"01","02","03","04","05","06","07","08","09","10","11","12"}; Object[] params = new Object[1]; params[0] = s; m.invoke(field.get(this), params); break; } } } catch (Exception e) { System.out.println(e.getMessage()); e.printStackTrace(); } } </code>
EDIT 2:
A melhor solução é criar um DatePicker personalizado (seguindo o primeiro conselho do @kaneda), sempre funcionará sem problemas de compatibilidade e não retransmitindo na reflexão.
Usou odate_picker.xml de android e DatePicker.java postado por @kaneda. Além disso, usei um NumberPicker personalizado (porque aquele que o widget DatePicker usa é interno ao android). Para o widget NumberPicker eu segui esteligação.
No CustomDatePicker eu comentei a funçãogetShortMonths()
e defina o intervalo do mês comomMonthPicker.setRange(1, NUMBER_OF_MONTHS);
.