diff --git a/android/src/main/java/com/swmansion/rnscreens/Screen.kt b/android/src/main/java/com/swmansion/rnscreens/Screen.kt index b31e3788e1..40eafd17f3 100644 --- a/android/src/main/java/com/swmansion/rnscreens/Screen.kt +++ b/android/src/main/java/com/swmansion/rnscreens/Screen.kt @@ -80,7 +80,7 @@ class Screen(context: ReactContext?) : FabricEnabledViewGroup(context) { private fun updateScreenSizePaper(width: Int, height: Int) { val reactContext = context as ReactContext reactContext.runOnNativeModulesQueueThread( - object : GuardedRunnable(reactContext) { + object : GuardedRunnable(reactContext.exceptionHandler) { override fun runGuarded() { reactContext .getNativeModule(UIManagerModule::class.java) diff --git a/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt b/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt index 48ff68440c..320bc876a3 100644 --- a/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt +++ b/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt @@ -62,7 +62,8 @@ class ScreenStackFragment : ScreenFragment, ScreenStackFragmentWrapper { override fun setToolbarShadowHidden(hidden: Boolean) { if (isToolbarShadowHidden != hidden) { - appBarLayout?.targetElevation = if (hidden) 0f else PixelUtil.toPixelFromDIP(4f) + appBarLayout?.elevation = if (hidden) 0f else PixelUtil.toPixelFromDIP(4f) + appBarLayout?.stateListAnimator = null isToolbarShadowHidden = hidden } } @@ -125,7 +126,7 @@ class ScreenStackFragment : ScreenFragment, ScreenStackFragmentWrapper { view?.addView(appBarLayout) if (isToolbarShadowHidden) { - appBarLayout?.targetElevation = 0f + appBarLayout?.elevation = 0f } toolbar?.let { appBarLayout?.addView(recycleView(it)) } setHasOptionsMenu(true) diff --git a/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt b/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt index 7358e22938..004cf98386 100644 --- a/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt +++ b/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt @@ -2,12 +2,14 @@ package com.swmansion.rnscreens import android.content.Context import android.graphics.PorterDuff +import android.graphics.PorterDuffColorFilter import android.os.Build import android.text.TextUtils import android.util.TypedValue import android.view.Gravity import android.view.View.OnClickListener import android.view.ViewGroup +import android.view.WindowInsets import android.widget.ImageView import android.widget.TextView import androidx.appcompat.app.AppCompatActivity @@ -82,7 +84,9 @@ class ScreenStackHeaderConfig(context: Context) : ViewGroup(context) { // we want to save the top inset before the status bar can be hidden, which would resolve in // inset being 0 if (headerTopInset == null) { - headerTopInset = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) + headerTopInset = if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.R) + rootWindowInsets.getInsets(WindowInsets.Type.systemBars()).top + else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) rootWindowInsets.systemWindowInsetTop else // Hacky fallback for old android. Before Marshmallow, the status bar height was always 25 @@ -228,7 +232,7 @@ class ScreenStackHeaderConfig(context: Context) : ViewGroup(context) { // color if (tintColor != 0) { - toolbar.navigationIcon?.setColorFilter(tintColor, PorterDuff.Mode.SRC_ATOP) + toolbar.navigationIcon?.colorFilter = PorterDuffColorFilter(tintColor, PorterDuff.Mode.SRC_ATOP) } // subviews diff --git a/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt b/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt index a405ec94d0..3ff53ddf88 100644 --- a/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt +++ b/android/src/main/java/com/swmansion/rnscreens/ScreenWindowTraits.kt @@ -60,7 +60,7 @@ object ScreenWindowTraits { val animated = screenForAnimated?.isStatusBarAnimated ?: false UiThreadUtil.runOnUiThread( - object : GuardedRunnable(context) { + object : GuardedRunnable(context.exceptionHandler) { override fun runGuarded() { val window = activity.window val curColor: Int = window.statusBarColor @@ -105,7 +105,7 @@ object ScreenWindowTraits { val screenForTranslucent = findScreenForTrait(screen, WindowTraits.TRANSLUCENT) val translucent = screenForTranslucent?.isStatusBarTranslucent ?: false UiThreadUtil.runOnUiThread( - object : GuardedRunnable(context) { + object : GuardedRunnable(context.exceptionHandler) { @TargetApi(Build.VERSION_CODES.LOLLIPOP) override fun runGuarded() { // If the status bar is translucent hook into the window insets calculations diff --git a/android/src/main/java/com/swmansion/rnscreens/events/HeaderHeightChangeEvent.kt b/android/src/main/java/com/swmansion/rnscreens/events/HeaderHeightChangeEvent.kt index dfc1932b56..37aefab15a 100644 --- a/android/src/main/java/com/swmansion/rnscreens/events/HeaderHeightChangeEvent.kt +++ b/android/src/main/java/com/swmansion/rnscreens/events/HeaderHeightChangeEvent.kt @@ -3,7 +3,6 @@ package com.swmansion.rnscreens.events import com.facebook.react.bridge.Arguments import com.facebook.react.bridge.WritableMap import com.facebook.react.uimanager.events.Event -import com.facebook.react.uimanager.events.RCTEventEmitter class HeaderHeightChangeEvent( surfaceId: Int,