티스토리 뷰
날짜를 입력할때 직접 edittext로 입력을 받을 수도 있지만 DatePickerDialog를 이용하는 경우도 많이 있습니다. 좀더 직관적으로 날짜를 입력 받을 수 있기 때문입니다. 이번 포스팅에서는 DatePickerDialog를 이용할때 년도만 표현하는 방법에 대해서 알아보도록 하겠습니다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 | private DatePickerDialog dataPickerOnlyYear() { Calendar c = Calendar.getInstance(); int cyear = c.get(Calendar.YEAR); int cmonth = c.get(Calendar.MONTH); int cday = c.get(Calendar.DAY_OF_MONTH); DatePickerDialog.OnDateSetListener mDateSetListener = new DatePickerDialog.OnDateSetListener() { @Override public void onDateSet(DatePicker view, int year, int monthOfYear, int dayOfMonth) { //날짜가 선택 된 이후 할일 //ex.텍스트뷰에 날짜를 표시등등 } }; dpd = new DatePickerDialog(getActivity(), mDateSetListener, cyear, cmonth, 1); dpd.getDatePicker().init(cyear, cmonth, 1, new OnDateChangedListener() { @Override public void onDateChanged(DatePicker view, int year, int monthOfYear, int dayOfMonth) { // TODO Auto-generated method stub dpd.setTitle("년도 선택"); } }); Calendar calendar = Calendar.getInstance(); //현재 년도 표현을 max로 설정하여 현재 년도 이후 년도는 나오지 않도록 설정 dpd.getDatePicker().setMaxDate(calendar.getTimeInMillis()); Calendar cal = Calendar.getInstance(); cal.set(Calendar.YEAR, 2000); //2000년를 min으로 설정하여 2000년 이전 년도는 나오지 않도록 설정 dpd.getDatePicker().setMinDate(cal.getTimeInMillis()); dpd.setTitle("년도 선택"); try { java.lang.reflect.Field[] datePickerDialogFields = dpd.getClass() .getDeclaredFields(); for (java.lang.reflect.Field datePickerDialogField : datePickerDialogFields) { if (datePickerDialogField.getName().equals("mDatePicker")) { datePickerDialogField.setAccessible(true); DatePicker datePicker = (DatePicker) datePickerDialogField .get(dpd); java.lang.reflect.Field[] datePickerFields = datePickerDialogField .getType().getDeclaredFields(); for (java.lang.reflect.Field datePickerField : datePickerFields) { // Log.i("test", datePickerField.getName()); if (android.os.Build.VERSION.SDK_INT >= 21) { int daySpinnerId = Resources.getSystem() .getIdentifier("day", "id", "android"); if (daySpinnerId != 0) { View daySpinner = datePicker .findViewById(daySpinnerId); if (daySpinner != null) { daySpinner.setVisibility(View.GONE); } } int MonthSpinnerId = Resources.getSystem() .getIdentifier("month", "id", "android"); if (MonthSpinnerId != 0) { View monthSpinner = datePicker .findViewById(MonthSpinnerId); if (monthSpinner != null) { monthSpinner.setVisibility(View.GONE); } } } else { if ("mDaySpinner".equals(datePickerField.getName()) || "mDaySpinner".equals(datePickerField .getName()) || "mMonthPicker".equals(datePickerField .getName()) || "mMonthSpinner".equals(datePickerField .getName())) { datePickerField.setAccessible(true); Object dayPicker = new Object(); dayPicker = datePickerField.get(datePicker); ((View) dayPicker).setVisibility(View.GONE); } } } } } } catch (Exception ex) { } return dpd; } | cs |
사용법
1 | dataPickerOnlyYear.show(); | cs |
'IT > Android' 카테고리의 다른 글
[Android]error: Error parsing XML : unbound prefix 에러 원인과 해결방법 (0) | 2017.02.26 |
---|---|
[Android]java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare() 에러 해결 방법 (0) | 2017.02.24 |
[Android]네트워크 연결/해지 Receiver 감지하기 (0) | 2017.01.24 |
[Android]Studio 레이아웃 프리뷰에서의 한글 깨짐 해결 (0) | 2017.01.21 |
[Android]단말 부팅 시 App 실행하기(BOOT_COMPLETED) (3) | 2017.01.13 |
댓글
TAG
- 래디어 구조
- 다렉
- Looper.prepare()
- 한글 패치
- 초대장
- 라이젠
- 투표소
- 테일즈 오브 베르세리아
- 하이엔드 그래픽카드
- 1800X
- 민주당 대선 후보
- 배달 지연
- 7700K
- 한글패치
- 오픈베타
- GPU 출시
- 블로그 개설
- 티스토리 초대장
- JSON PASER
- 예약메일 전송
- ONLINE JSON
- 국기 다는 시간
- unbound prefix
- 포아너
- 단면폭
- 1800TI
- 19대 선거
- GPU 출시가격
- 사제 쿨러
- 림의 외경
최근에 올라온 글
반응형
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
공지사항