From dec1b6ba15df8f255d30b696a7c08ef543d1d19c Mon Sep 17 00:00:00 2001 From: Lulu Wu Date: Tue, 2 Mar 2021 10:41:20 -0800 Subject: [PATCH] Test setting layout params to wrap_content for fix text layout bug Summary: Changelog: [Android][Fixed] - Fix layout bug in ReactTextView. Reviewed By: mdvacca Differential Revision: D26752392 fbshipit-source-id: eeb9c16a4165b4d9329534981925621ae51a7dcb --- .../facebook/react/views/text/ReactTextView.java | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java index 85e5cdd62e8954..11dabebc61fb7d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java @@ -48,6 +48,10 @@ public class ReactTextView extends AppCompatTextView implements ReactCompoundVie private static final ViewGroup.LayoutParams EMPTY_LAYOUT_PARAMS = new ViewGroup.LayoutParams(0, 0); + private static final ViewGroup.LayoutParams WRAP_CONTENT_LAYOUT_PARAMS = + new ViewGroup.LayoutParams( + ViewGroup.LayoutParams.WRAP_CONTENT, ViewGroup.LayoutParams.WRAP_CONTENT); + private boolean mContainsImages; private int mDefaultGravityHorizontal; private int mDefaultGravityVertical; @@ -266,12 +270,14 @@ public int compare(Object o1, Object o2) { public void setText(ReactTextUpdate update) { mContainsImages = update.containsImages(); - if (ReactFeatureFlags.enableSettingEmptyLayoutParams) { - // Android's TextView crashes when it tries to relayout if LayoutParams are - // null; explicitly set the LayoutParams to prevent this crash. See: - // https://github.com/facebook/react-native/pull/7011 - if (getLayoutParams() == null) { + // Android's TextView crashes when it tries to relayout if LayoutParams are + // null; explicitly set the LayoutParams to prevent this crash. See: + // https://github.com/facebook/react-native/pull/7011 + if (getLayoutParams() == null) { + if (ReactFeatureFlags.enableSettingEmptyLayoutParams) { setLayoutParams(EMPTY_LAYOUT_PARAMS); + } else { + setLayoutParams(WRAP_CONTENT_LAYOUT_PARAMS); } } Spannable spannable = update.getText();