diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNodeImpl.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNodeImpl.java index 8d906c4bc2..5f4ad868fe 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNodeImpl.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ReactShadowNodeImpl.java @@ -1024,11 +1024,6 @@ public class ReactShadowNodeImpl implements ReactShadowNode @Override public void setMeasureFunction(YogaMeasureFunction measureFunction) { - if ((measureFunction == null ^ mYogaNode.isMeasureDefined()) && getChildCount() != 0) { - throw new RuntimeException( - "Since a node with a measure function does not add any native yoga children, it's " - + "not safe to transition to/from having a measure function unless a node has no children"); - } mYogaNode.setMeasureFunction(measureFunction); } 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 37b13700fc..1cec7c690b 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 @@ -18,6 +18,7 @@ import android.view.Gravity; import android.widget.TextView; import com.facebook.infer.annotation.Assertions; import com.facebook.react.uimanager.LayoutShadowNode; +import com.facebook.react.uimanager.ReactShadowNodeImpl; import com.facebook.react.uimanager.Spacing; import com.facebook.react.uimanager.UIViewOperationQueue; import com.facebook.yoga.YogaConstants; @@ -144,7 +145,6 @@ public class ReactTextShadowNode extends ReactBaseTextShadowNode { private ReactTextShadowNode(ReactTextShadowNode node) { super(node); this.mPreparedSpannableText = node.mPreparedSpannableText; - initMeasureFunction(); } private void initMeasureFunction() { @@ -158,6 +158,20 @@ public class ReactTextShadowNode extends ReactBaseTextShadowNode { return new ReactTextShadowNode(this); } + @Override + public ReactShadowNodeImpl mutableCopy() { + ReactTextShadowNode copy = (ReactTextShadowNode) super.mutableCopy(); + copy.initMeasureFunction(); + return copy; + } + + @Override + public ReactShadowNodeImpl mutableCopyWithNewChildren() { + ReactTextShadowNode copy = (ReactTextShadowNode) super.mutableCopyWithNewChildren(); + copy.initMeasureFunction(); + return copy; + } + // Return text alignment according to LTR or RTL style private int getTextAlign() { int textAlign = mTextAlign;