[Android]Material Date Pickerの注意点

Material Componentsで提供されている MaterialDatePickerはマテリアルデザインに準拠しておりモダンなUIを作る際に非常に便利です。

しかし、issueなどに記載されているようにタイムゾーンに依存した以下の問題があります。
※Material Componentsが1.8.0で発生しています。

  • カレンダー表示時にセットした日付と表示される日付がずれる

この問題は、セットした日付が常に"UTC+0"時として扱われるのが原因のようです。
対策するにはセットする時刻に時差を追加する必要があります。
具体的なコードは以下となります。

//現在時刻を得取得する
val calendar = Calendar.getInstance()

//MaterialDatePickerはUTC時刻のみとなるためオフセットによって調整する
val timeZone = TimeZone.getDefault()
val offset = timeZone.getOffset(calendar.timeInMillis)

// 日付選択ダイアログの生成(選択時刻に時差を足す)
val datePicker = MaterialDatePicker.Builder.datePicker().setSelection(calendar.timeInMillis + offset).build()

//ダイアログを表示する
datePicker.show(childFragmentManager, "")

0 件のコメント :

コメントを投稿