簡単な質問がありますが、しばらく検索しても答えが見つかりませんでした。DatePickerで、文字列ではなく整数として表示される月を変更することはできますか?例:{1,2,3 ..}ではなく{jan、feb、mar ...}
編集:
@kanedaのソリューションは機能しているように見えますが、Android 3.0では、少なくともメソッドと属性は同じではありません。私が使用しているコードは次のとおりです。
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();
}
}
編集2:
最善の解決策は、カスタムDatePicker(@kanedaの最初のアドバイスに従う)を作成することです。これは、互換性の問題がなく、リフレクションを中継しない場合でも常に機能します。
androidのdate_picker.xmlと@kanedaによって投稿されたDatePicker.javaを使用しました。また、カスタムのNumberPickerを使用しました(DatePickerウィジェットが使用するものはAndroidの内部にあるため)。NumberPickerウィジェットについては、このリンクをたどりました。
CustomDatePickerで、関数にコメントを付けgetShortMonths()
、月の範囲をに設定しましたmMonthPicker.setRange(1, NUMBER_OF_MONTHS);
。