반응형
datePicker = (DatePicker) findViewById(R.id.expiration_date); try { Field f[] = datePicker.getClass().getDeclaredFields(); for (Field field : f) { if (field.getName().equals("mDayPicker")) { field.setAccessible(true); Object dayPicker = new Object(); dayPicker = field.get(datePicker); ((View) dayPicker).setVisibility(View.GONE); } } } catch (SecurityException e) { Log.d("ERROR", e.getMessage()); } catch (IllegalArgumentException e) { Log.d("ERROR", e.getMessage()); } catch (IllegalAccessException e) { Log.d("ERROR", e.getMessage()); }
제일 중요한 부분은 if (field.getName().equals("mDayPicker")) 이 부분이다.
근데 버전업이 되면서 진저브레드(2.3)이후 버전 부터는 mDaySpinner 이라고 써야 된다고 한다.
그러니
if (field.getName().equals("mDayPicker") || field.getName().equals("mDaySpinner") )
이렇게 개선해야 것이다.
마찬가지로
이 부분을 mYearPicker 및 mYearSpinner 로 바꾸면 년을 지울 수 있고
이 부분을 mMonthPicker 및 mMonthSpinner 로 바꾸면 월을 지울 수 있다.
소스를 참고하여 다음과 같은 데이터 피커를 만들었다.
의외로 시간이 걸린 부분이 타이틀 부분이었다.
생소한 부분이라서 조금 해맸다.
그외에 datePicker 객체를 쓰지 않고, 클래스를 통째로 불러와서 쓰면
몇가지 변경점이 있다. datePicker =>DataPickerDialog.class 가되고
두번째 datePicker가 있던 곳은 this로 변경해야 된다.
소스
import java.lang.reflect.Field; import android.app.DatePickerDialog; import android.content.Context; import android.view.View; import android.widget.DatePicker; class MyDatePickerDialog extends DatePickerDialog { public MyDatePickerDialog(Context context, OnDateSetListener callBack, int year, int monthOfYear, int dayOfMonth) { super(context, callBack, year, monthOfYear, dayOfMonth); try { Field[] f = DatePickerDialog.class.getDeclaredFields(); for (Field dateField : f) { if(dateField.getName().equals("mDatePicker")) { dateField.setAccessible(true); DatePicker datePicker = (DatePicker)dateField.get(this); Field datePickerFields[] = dateField.getType().getDeclaredFields(); for(Field datePickerField : datePickerFields) { if("mDayPicker".equals(datePickerField.getName()) || "mDaySpinner".equals(datePickerField.getName() )) { datePickerField.setAccessible(true); Object dayPicker = new Object(); dayPicker = datePickerField.get(datePicker); ((View)dayPicker).setVisibility(View.GONE); } } } } setTitle(year+"년 "+monthOfYear+"월"); } catch (IllegalArgumentException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } @Override public void onDateChanged(DatePicker view, int year, int month, int day) { super.onDateChanged(view, year, month, day); setTitle(year+"년 "+(month+1)+"월"); } }
참고:http://dante2k.tistory.com/archive/20130910
반응형
'호구지책 > Java/Android ' 카테고리의 다른 글
[안드로이드] 메모리 릭 (0) | 2015.10.21 |
---|---|
[안드로이드] 사진 중복 저장 이슈 (0) | 2015.09.01 |
[안드로이드] 앱 완전 종료 (0) | 2015.09.01 |
[JAVA] Log4j (0) | 2015.08.28 |
[안드로이드]이미지 저장 경로 이슈 (0) | 2015.08.25 |
[안드로이드]갤러리 새로고침(Refresh) (0) | 2015.08.25 |
GCM - Google Play Service (0) | 2015.03.31 |
이클립스 최적화 (0) | 2015.02.09 |
댓글