diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java index b8a4811dcf7..a47fa766961 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java @@ -67,8 +67,11 @@ public class ReactTextShadowNode extends LayoutShadowNode { public static final String PROP_TEXT = "text"; public static final String PROP_SHADOW_OFFSET = "textShadowOffset"; + public static final String PROP_SHADOW_OFFSET_WIDTH = "width"; + public static final String PROP_SHADOW_OFFSET_HEIGHT = "height"; public static final String PROP_SHADOW_RADIUS = "textShadowRadius"; public static final String PROP_SHADOW_COLOR = "textShadowColor"; + public static final int DEFAULT_TEXT_SHADOW_COLOR = 0x55000000; private static final TextPaint sTextPaintInstance = new TextPaint(); @@ -474,13 +477,22 @@ public class ReactTextShadowNode extends LayoutShadowNode { @ReactProp(name = PROP_SHADOW_OFFSET) public void setTextShadowOffset(ReadableMap offsetMap) { - if (offsetMap == null) { - mTextShadowOffsetDx = 0; - mTextShadowOffsetDy = 0; - } else { - mTextShadowOffsetDx = PixelUtil.toPixelFromDIP(offsetMap.getDouble("width")); - mTextShadowOffsetDy = PixelUtil.toPixelFromDIP(offsetMap.getDouble("height")); + mTextShadowOffsetDx = 0; + mTextShadowOffsetDy = 0; + + if (offsetMap != null) { + if (offsetMap.hasKey(PROP_SHADOW_OFFSET_WIDTH) && + !offsetMap.isNull(PROP_SHADOW_OFFSET_WIDTH)) { + mTextShadowOffsetDx = + PixelUtil.toPixelFromDIP(offsetMap.getDouble(PROP_SHADOW_OFFSET_WIDTH)); + } + if (offsetMap.hasKey(PROP_SHADOW_OFFSET_HEIGHT) && + !offsetMap.isNull(PROP_SHADOW_OFFSET_HEIGHT)) { + mTextShadowOffsetDy = + PixelUtil.toPixelFromDIP(offsetMap.getDouble(PROP_SHADOW_OFFSET_HEIGHT)); + } } + markUpdated(); }