본문 바로가기
개발/안드로이드

[안드로이드] timepickerdialog spinner 모드로 변경하는 법

by 핸디(Handy) 2020. 3. 23.

TimePickerDialog 는 시간을 입력받을때 아주 유용한 dialog 입니다. 하지만 일반적으로 쓰기에 불편합니다.

시계 자체가 보기는 편하지만 값을 입력하기가 번거롭기 때문입니다. 그래서 스피너 모드를 쓰는 방법에 대해 적어보고자 합니다.

 

<최종 결과>

기본 모드
스피너 모드

<구현>

기본 모드

 TimePickerDialog dialog = new TimePickerDialog(Map_carsharing_borrow.this, listener, 15, 24, false);
                dialog.setTitle("대여시작시간");
                dialog.show();

스피너 모드

  TimePickerDialog dialog = new TimePickerDialog(Map_carsharing_borrow.this,android.R.style.Theme_Holo_Light_Dialog_NoActionBar, listener, 15, 24, false);
                dialog.setTitle("대여반납시간");
                dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);
                dialog.show();

리스너 

    private TimePickerDialog.OnTimeSetListener listener = new TimePickerDialog.OnTimeSetListener() {

        @Override

        public void onTimeSet(TimePicker view, int hourOfDay, int minute) {

            if(flag == 0) {
                binding.textBorrow.setTextSize(15);
                binding.textBorrow.setText(hourOfDay + ":" + minute);
                str_borrow_time = hourOfDay + ":" + minute;
                borrow_time = hourOfDay*60+minute;
            } else if (flag == 1){
                binding.textReturn.setTextSize(15);
                binding.textReturn.setText(hourOfDay + ":" + minute);
                str_return_time = hourOfDay + ":" + minute;
                return_time = hourOfDay*60+minute;
            }


        }

    };

 

<설명>

기본모드의 경우 그냥 timepickerdialog를 불러오고 시간을 설정하면 됩니다.

 new TimePickerDialog(Map_carsharing_borrow.this, listener, 15, 24, false)

순서대로 context , listener, hour, minute, 24시간표기여부) 로 생각하시면 됩니다.

저는 오후 3시 24분으로 설정을 하기 위해 15, 24, false 로 값을 넣었습니다. listener의 경우는 timepickerdialog에서 시간을 선택했을때 호출되는 메소드입니다. 

여기서는 flag를 통해 대여시간인지 반납시간인지 확인하여 값을 textview에 넣어서 확인하였습니다.


이젠 스피너모드 입니다. 스피너모드에는 값을 하나만 추가하시면 됩니다. 바로 테마인데요.

new TimePickerDialog(Map_carsharing_borrow.this,android.R.style.Theme_Holo_Light_Dialog_NoActionBar, listener, 15, 24, false)

android.R.style.Theme_Holo_Light_Dialog_NoActionBar <- 이 코드를 context와 listener 사이에 추가하고 

 dialog.getWindow().setBackgroundDrawableResource(android.R.color.transparent);

기존의 timepickerdialog의 배경을 없애주며 깔끔한 스피너 모드의 timepicker가 완성됩니다.

댓글