Skip to content

Commit ea293f9

Browse files
committed
feat: ✨ enables theme overlays for material 3 date pickers
1 parent 4865e33 commit ea293f9

File tree

1 file changed

+16
-3
lines changed

1 file changed

+16
-3
lines changed

android/src/main/java/com/reactcommunity/rndatetimepicker/RNMaterialDatePicker.kt

+16-3
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.reactcommunity.rndatetimepicker
22

33
import android.content.DialogInterface
44
import android.os.Bundle
5+
import android.util.TypedValue
56
import androidx.fragment.app.FragmentManager
67
import com.facebook.react.bridge.Promise
78
import com.facebook.react.bridge.ReactApplicationContext
@@ -13,6 +14,7 @@ import com.google.android.material.datepicker.DateValidatorPointBackward
1314
import com.google.android.material.datepicker.DateValidatorPointForward
1415
import com.google.android.material.datepicker.MaterialDatePicker
1516
import com.google.android.material.datepicker.MaterialPickerOnPositiveButtonClickListener
17+
import com.google.android.material.R
1618
import java.util.Calendar
1719

1820
class RNMaterialDatePicker(
@@ -97,14 +99,25 @@ class RNMaterialDatePicker(
9799

98100
private fun setFullscreen() {
99101
val isFullscreen = args.getBoolean(RNConstants.ARG_FULLSCREEN)
100-
101102
if (isFullscreen) {
102-
builder.setTheme(com.google.android.material.R.style.ThemeOverlay_Material3_MaterialCalendar_Fullscreen)
103+
val themeId = obtainMaterialThemeOverlayId(R.attr.materialCalendarFullscreenTheme)
104+
builder.setTheme(themeId)
103105
} else {
104-
builder.setTheme(com.google.android.material.R.style.ThemeOverlay_Material3_MaterialCalendar)
106+
val themeId = obtainMaterialThemeOverlayId(R.attr.materialCalendarTheme)
107+
builder.setTheme(themeId)
105108
}
106109
}
107110

111+
private fun obtainMaterialThemeOverlayId(resId: Int): Int {
112+
if (reactContext.currentActivity?.theme == null) {
113+
return resId
114+
}
115+
116+
val typedValue = TypedValue()
117+
reactContext.currentActivity!!.theme!!.resolveAttribute(resId, typedValue, true)
118+
return typedValue.resourceId
119+
}
120+
108121
private fun addListeners() {
109122
val listeners = Listeners()
110123
datePicker!!.addOnPositiveButtonClickListener(listeners)

0 commit comments

Comments
 (0)