chacha's

🔨 Hide DatePicker Header 본문

Android/TIL

🔨 Hide DatePicker Header

Cha_Cha 2021. 6. 11. 19:47
 Hide “selected date” part of DatePicker - stack overflow 
 Android DatePicker calendar's last row is cropped - stack overflow
 How to hide header in CalendarView in DatePicker? - stack overflow
 를 참고하여 작성한 글입니다.

 

DatePicker를 그냥 사용하면 아래와 같은 화면을 만나게 됩니다. 저는 여기서 위에 민트색 헤더 부분을 없애서 사용하고 싶었습니다.

기본 DatePicker / 내가 원한 DatePicker

이것저것 시도하던 중에 xml에서 아래와 같이 설정하면 해결된다는 글을 보았고 시도해보았더니 캘린더 아래가 짤리는 문제를 만나게 되었다.

    <DatePicker
        android:id="@+id/datepicker"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:datePickerMode="spinner"
        android:spinnersShown="false" />

다른 방법을 찾는 와중에 DatePicker의 리소스에 접근하여 visibility 속성을 GONE으로 설정해주는 방법을 시도하였고 성공적으로 없앨 수 있었습니다.

Header Id 알아내기

class RepeatDateDialogFragment:  DialogFragment(), DatePickerDialog.OnDateSetListener {
    ...
    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        ...
        // DatePicker Header 없애기
        val datepickerHeaderid = binding.datepicker.getChildAt(0)
            .resources.getIdentifier("date_picker_header", "id", "android")
        binding.datepicker.findViewById<View>(datepickerHeaderid).visibility = View.GONE
        ...
    }
    ...
}

위의 코드로 아래와 같은 결과를 얻을 수 있습니다.

DatePicker Header 없애기

하지만 다른 부분에서 해결할 수 없는 문제를 만나서... 결국 커스텀뷰를 만들게 되었습니다. 😭😭😭

 

Comments