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가 완성됩니다.
'개발 > 안드로이드' 카테고리의 다른 글
[안드로이드] 원하는 좌표를 구글맵 화면에 표시해보자(LatLngBounds) (0) | 2020.05.16 |
---|---|
[안드로이드] 네이버 길찾기 api 파싱해서 구글맵 폴리라인 찍기 (1) | 2020.05.11 |
[안드로이드] json 파싱시 값이 null 또는 데이터가 없을 때 | 버그리포트 (2) | 2020.03.16 |
[안드로이드] 공공데이터 (공적마스크_코로나) api 받아서 구글맵에 마커찍기 (2) | 2020.03.15 |
[안드로이드] 앱 초기 로딩시 흰 화면 없애기(인트로 페이지 공백없애기) (2) | 2020.03.12 |
댓글