datepickerdialogの日付フィールドを非表示/削除する方法。実際、私の要件はネイティブの日付ピッカーダイアログを使用することですが、それは日、月、年で表示されます。しかし、私の要件に従って、私は月と年だけを必要とします。だから私はビューから日フィールドを非表示または削除したいと思います。
どんな助けでも大いに役立つでしょう。
datepickerdialogの日付フィールドを非表示/削除する方法。実際、私の要件はネイティブの日付ピッカーダイアログを使用することですが、それは日、月、年で表示されます。しかし、私の要件に従って、私は月と年だけを必要とします。だから私はビューから日フィールドを非表示または削除したいと思います。
どんな助けでも大いに役立つでしょう。
この種のことを行うためにリフレクションを使用することはお勧めしません。
これを行うには、より簡単できれいな方法があります。
((ViewGroup) datePickerDialog.getDatePicker()).findViewById(Resources.getSystem().getIdentifier("day", "id", "android")).setVisibility(View.GONE);
.getDatePicker()
メソッド from は でDatePickerDialog
動作することに注意してくださいAPI LEVEL >= 11
。
Private DatePickerDialog createDialogWithoutDateField(){
DatePickerDialog dpd = new DatePickerDialog(_activity, ExpiryDateSetListener,cyear,cmonth, cday);
try{
Field[] datePickerDialogFields = dpd.getClass().getDeclaredFields();
for (Field datePickerDialogField : datePickerDialogFields) {
if (datePickerDialogField.getName().equals("mDatePicker")) {
datePickerDialogField.setAccessible(true);
DatePicker datePicker = (DatePicker) datePickerDialogField.get(dpd);
Field datePickerFields[] = datePickerDialogField.getType().getDeclaredFields();
for (Field datePickerField : datePickerFields) {
if ("mDayPicker".equals(datePickerField.getName())) {
datePickerField.setAccessible(true);
Object dayPicker = new Object();
dayPicker = datePickerField.get(datePicker);
((View) dayPicker).setVisibility(View.GONE);
}
}
}
}
}catch(Exception ex){
}
return dpd;
}
上記のコードを使用して、DatePickerDialog で日フィールドを非表示にします。
のソース コードをDatePicker
入手DatePickerDialog
して、クローンを作成し、独自のパッケージにリファクタリングし、必要に応じて変更することができます。
((ViewGroup) datePickerDialog.getDatePicker()).findViewById(Resources.getSystem().getIdentifier("day", "id", "android")).setVisibility(View.GONE);
これは正常に動作します
Calendar c = Calendar.getInstance();
int mYear = c.get(Calendar.YEAR);
int mMonth = c.get(Calendar.MONTH);
int mDay = c.get(Calendar.DAY_OF_MONTH);
DatePickerDialog datePickerDialog = new DatePickerDialog(getActivity(), AlertDialog.THEME_HOLO_DARK,
new DatePickerDialog.OnDateSetListener() {
@Override
public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) {
txtMonth.setText(dayOfMonth + "-" + (monthOfYear + 1) + "-" + year);
}
}, mYear, mMonth, mDay);
((ViewGroup) datePickerDialog.getDatePicker()).findViewById(Resources.getSystem().getIdentifier("day", "id", "android")).setVisibility(View.GONE);
datePickerDialog.show();
このリンクを参照してくださいdatepicker の例で日の選択を無効にする
カスタマイズしたくない限り、それほど深くする必要はないと思います..次のものがあります:
mDatePicker.getDatePicker().setCalendarViewShown(false);
これは、カレンダー セグメントを削除するための非常に正当な呼び出しです。