From 139c462b93d20cb38fa6de0c03b697bcdc92df45 Mon Sep 17 00:00:00 2001 From: Guilherme Iscaro Date: Fri, 12 Jul 2019 21:25:51 -0300 Subject: [PATCH] Properly set borderRadius on Android In orde to properly set the view's borderRadius the inner*RadiusX/inner*RadiusY should not be used, since their values are obtained via the following formula: int innerTopLeftRadiusX = Math.max(topLeftRadius - borderWidth.left, 0); If topLeftRadius and borderWidth.left have the same value innerTopLeftRadiusX will be zero and it will cause the top left radius to never be set since "(innerTopLeftRadiusX > 0 ? extraRadiusForOutline : 0)" will evaluate to zero. In order to prevent this issue the condition will only consider topLeftRadius, topRightRadius, and etc. --- .../views/view/ReactViewBackgroundDrawable.java | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java b/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java index ed998e608018f2..77d0fa8dfb89e7 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/view/ReactViewBackgroundDrawable.java @@ -659,14 +659,14 @@ private void updatePath() { mCenterDrawPath.addRoundRect( mTempRectForCenterDrawPath, new float[] { - innerTopLeftRadiusX + (innerTopLeftRadiusX > 0 ? extraRadiusForOutline : 0), - innerTopLeftRadiusY + (innerTopLeftRadiusY > 0 ? extraRadiusForOutline : 0), - innerTopRightRadiusX + (innerTopRightRadiusX > 0 ? extraRadiusForOutline : 0), - innerTopRightRadiusY + (innerTopRightRadiusY > 0 ? extraRadiusForOutline : 0), - innerBottomRightRadiusX + (innerBottomRightRadiusX > 0 ? extraRadiusForOutline : 0), - innerBottomRightRadiusY + (innerBottomRightRadiusY > 0 ? extraRadiusForOutline : 0), - innerBottomLeftRadiusX + (innerBottomLeftRadiusX > 0 ? extraRadiusForOutline : 0), - innerBottomLeftRadiusY + (innerBottomLeftRadiusY > 0 ? extraRadiusForOutline : 0) + innerTopLeftRadiusX + (topLeftRadius > 0 ? extraRadiusForOutline : 0), + innerTopLeftRadiusY + (topLeftRadius > 0 ? extraRadiusForOutline : 0), + innerTopRightRadiusX + (topRightRadius > 0 ? extraRadiusForOutline : 0), + innerTopRightRadiusY + (topRightRadius > 0 ? extraRadiusForOutline : 0), + innerBottomRightRadiusX + (bottomRightRadius > 0 ? extraRadiusForOutline : 0), + innerBottomRightRadiusY + (bottomRightRadius > 0 ? extraRadiusForOutline : 0), + innerBottomLeftRadiusX + (bottomLeftRadius > 0 ? extraRadiusForOutline : 0), + innerBottomLeftRadiusY + (bottomLeftRadius > 0 ? extraRadiusForOutline : 0) }, Path.Direction.CW);