Fix elevation with border-radius set (#48982)

Summary:
Pull Request resolved: https://github.com/facebook/react-native/pull/48982

We were missing a conversion to px on the `getOutline()` function of `CompositeBackgroundDrawable` which led to incorrect elevation prop rendering

Changelog: [Android][Fixed] - Elevation prop on android has incorrect border-radius

Reviewed By: NickGerleman

Differential Revision: D68724947

fbshipit-source-id: b3a7a4919bfd7c60fac7c3d6e3ba760e3f74d190
This commit is contained in:
Jorge Cabiedes Acosta
2025-02-11 14:35:21 +00:00
committed by Rob Hogan
parent bc35afefd5
commit 55d5c44976
@@ -16,6 +16,7 @@ import android.graphics.drawable.LayerDrawable
import android.os.Build
import com.facebook.react.common.annotations.UnstableReactNativeAPI
import com.facebook.react.internal.featureflags.ReactNativeFeatureFlags
import com.facebook.react.uimanager.PixelUtil.dpToPx
import com.facebook.react.uimanager.style.BorderInsets
import com.facebook.react.uimanager.style.BorderRadiusStyle
@@ -200,14 +201,14 @@ internal class CompositeBackgroundDrawable(
pathForOutline.addRoundRect(
RectF(bounds),
floatArrayOf(
it.topLeft.horizontal + (computedBorderInsets?.left ?: 0f),
it.topLeft.vertical + (computedBorderInsets?.top ?: 0f),
it.topRight.horizontal + (computedBorderInsets?.right ?: 0f),
it.topRight.vertical + (computedBorderInsets?.top ?: 0f),
it.bottomRight.horizontal + (computedBorderInsets?.right ?: 0f),
it.bottomRight.vertical + (computedBorderInsets?.bottom ?: 0f),
it.bottomLeft.horizontal + (computedBorderInsets?.left ?: 0f),
it.bottomLeft.vertical) + (computedBorderInsets?.bottom ?: 0f),
(it.topLeft.horizontal + (computedBorderInsets?.left ?: 0f)).dpToPx(),
(it.topLeft.vertical + (computedBorderInsets?.top ?: 0f)).dpToPx(),
(it.topRight.horizontal + (computedBorderInsets?.right ?: 0f)).dpToPx(),
(it.topRight.vertical + (computedBorderInsets?.top ?: 0f)).dpToPx(),
(it.bottomRight.horizontal + (computedBorderInsets?.right ?: 0f)).dpToPx(),
(it.bottomRight.vertical + (computedBorderInsets?.bottom ?: 0f)).dpToPx(),
(it.bottomLeft.horizontal + (computedBorderInsets?.left ?: 0f)).dpToPx(),
(it.bottomLeft.vertical + (computedBorderInsets?.bottom ?: 0f)).dpToPx()),
Path.Direction.CW)
}