From 7c2f944662b51be0fd47474a7a44236c8b10856c Mon Sep 17 00:00:00 2001 From: Jakub Piasecki Date: Mon, 15 Apr 2024 13:10:02 +0200 Subject: [PATCH] Fix font size changing on hot reload --- .../com/facebook/react/views/text/ReactTextView.java | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java index 7f586796972288..fffafbd3907454 100644 --- a/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java +++ b/packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextView.java @@ -70,6 +70,7 @@ public class ReactTextView extends AppCompatTextView implements ReactCompoundVie private int mLinkifyMaskType; private boolean mNotifyOnInlineViewLayout; private boolean mTextIsSelectable; + private boolean mShouldAdjustSpannableFontSize; private ReactViewBackgroundManager mReactBackgroundManager; private Spannable mSpanned; @@ -97,6 +98,7 @@ private void initView() { mLinkifyMaskType = 0; mNotifyOnInlineViewLayout = false; mTextIsSelectable = false; + mShouldAdjustSpannableFontSize = false; mEllipsizeLocation = TextUtils.TruncateAt.END; mFontSize = Float.NaN; mMinimumFontSize = Float.NaN; @@ -363,10 +365,9 @@ public int compare(Object o1, Object o2) { } @Override - public void layout(int l, int t, int r, int b) { - super.layout(l, t, r, b); - - if (this.mAdjustsFontSizeToFit && this.getSpanned() != null) { + protected void onDraw(Canvas canvas) { + if (this.mAdjustsFontSizeToFit && this.getSpanned() != null && mShouldAdjustSpannableFontSize) { + mShouldAdjustSpannableFontSize = false; TextLayoutManagerMapBuffer.adjustSpannableFontToFit( this.getSpanned(), this.getWidth(), @@ -382,6 +383,8 @@ public void layout(int l, int t, int r, int b) { ); this.setText(this.getSpanned()); } + + super.onDraw(canvas); } public void setText(ReactTextUpdate update) { @@ -685,6 +688,7 @@ public void setBorderStyle(@Nullable String style) { public void setSpanned(Spannable spanned) { mSpanned = spanned; + mShouldAdjustSpannableFontSize = true; } public Spannable getSpanned() {