마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

datepicker spinner 모드에서 표시 형식 변경

0 추천
안녕하세요

datepicker spinner를 사용하고 있습니다.

이 때 표시 형식을 변경하고 싶은데 방법이 있을까요??

예를들면

2000 | 12 | 05 이런식으로 선택칸이 있다면

2000년 | 12월 | 5일 이렇게 숫자 뒤에 글자를 붙이고 싶습니다.
자발개보초 (340 포인트) 님이 2023년 3월 19일 질문

1개의 답변

0 추천
 
채택된 답변

바로는 지원이 안됩니다. 대신 NumberPicker를 세개 배치해서 아래처럼 구현할 수 있습니다,

XML에 NumberPicker를 가로로 세개 배치합니다. DatePicker도 내부적으로 NumberPicker를 사용합니다.

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal">

        <NumberPicker
            android:id="@+id/year_picker"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:value="2022" />

        <NumberPicker
            android:id="@+id/month_picker"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:value="3" />

        <NumberPicker
            android:id="@+id/day_picker"
            android:layout_width="0dp"
            android:layout_height="wrap_content"
            android:layout_weight="1"
            android:gravity="center"
            android:value="19" />

    </LinearLayout>

 

액티비티에서 아래와 같이 처리합니다.

@Override
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        NumberPicker yearPicker = findViewById<NumberPicker>(R.id.year_picker);
        NumberPicker monthPicker = findViewById<NumberPicker>(R.id.month_picker);
        NumberPicker dayPicker = findViewById<NumberPicker>(R.id.day_picker);

        yearPicker.setMinValue(2000);
        yearPicker.setMinValue(2030);
        yearPicker.setFormatter(new NumberPicker.Formatter() {
            @Override
            public String format(int value) {
                return String.format("%d년", value);
            }
        });

        monthPicker.setMinValue(1);
        monthPicker.setMaxValue(12);
        monthPicker.setFormatter(new NumberPicker.Formatter() {
            @Override
            public String format(int value) {
                return String.format("%d월", value);
            }
        });

        dayPicker.setMinValue(1);
        dayPicker.setMaxValue(31);
        dayPicker.setFormatter(new NumberPicker.Formatter() {
            @Override
            public String format(int value) {
                return String.format("%d일", value);
            }
        });
}

 

월이 바뀔 때 날짜의 범위를 월에 맞게 설정해 주셔야 겠죠. NumberPicker 클래스를 찾아보시면 금방 방법을 찾으실 수 있습니다.

필요하시면 커스텀 뷰로 만들어 사용하세요.

이 방법이 아니라면 third party를 찾아보셔도 되구요.

spark (226,420 포인트) 님이 2023년 3월 19일 답변
자발개보초님이 2023년 3월 20일 채택됨
상세한 답변 감사합니다!!
...