바로는 지원이 안됩니다. 대신 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를 찾아보셔도 되구요.