Skip to content

Commit c6b4f9f

Browse files
ayc1facebook-github-bot
authored andcommitted
Fix TextInput's initial layout measurements
Reviewed By: mdvacca Differential Revision: D7732819 fbshipit-source-id: 0ca4e5643d2cfefe304d7f189474a671c4bcb31e
1 parent 5fc42f3 commit c6b4f9f

File tree

1 file changed

+19
-4
lines changed

1 file changed

+19
-4
lines changed

ReactAndroid/src/main/java/com/facebook/react/views/textinput/ReactTextInputShadowNode.java

+19-4
Original file line numberDiff line numberDiff line change
@@ -9,16 +9,19 @@
99

1010
import android.os.Build;
1111
import android.text.Layout;
12+
import android.util.TypedValue;
1213
import android.view.ViewGroup;
1314
import android.widget.EditText;
1415
import com.facebook.infer.annotation.Assertions;
1516
import com.facebook.react.bridge.JSApplicationIllegalArgumentException;
1617
import com.facebook.react.common.annotations.VisibleForTesting;
1718
import com.facebook.react.uimanager.LayoutShadowNode;
19+
import com.facebook.react.uimanager.PixelUtil;
1820
import com.facebook.react.uimanager.ReactShadowNodeImpl;
1921
import com.facebook.react.uimanager.Spacing;
2022
import com.facebook.react.uimanager.ThemedReactContext;
2123
import com.facebook.react.uimanager.UIViewOperationQueue;
24+
import com.facebook.react.uimanager.ViewDefaults;
2225
import com.facebook.react.uimanager.annotations.ReactProp;
2326
import com.facebook.react.views.text.ReactBaseTextShadowNode;
2427
import com.facebook.react.views.text.ReactTextUpdate;
@@ -127,12 +130,24 @@ public long measure(
127130
// measure() should never be called before setThemedContext()
128131
EditText editText = Assertions.assertNotNull(mDummyEditText);
129132

130-
if (mLocalData == null) {
131-
// No local data, no intrinsic size.
132-
return YogaMeasureOutput.make(0, 0);
133+
if (mLocalData != null) {
134+
mLocalData.apply(editText);
135+
} else {
136+
editText.setTextSize(
137+
TypedValue.COMPLEX_UNIT_PX,
138+
mFontSize == UNSET ?
139+
(int) Math.ceil(PixelUtil.toPixelFromSP(ViewDefaults.FONT_SIZE_SP)) : mFontSize);
140+
141+
if (mNumberOfLines != UNSET) {
142+
editText.setLines(mNumberOfLines);
143+
}
144+
145+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M &&
146+
editText.getBreakStrategy() != mTextBreakStrategy) {
147+
editText.setBreakStrategy(mTextBreakStrategy);
148+
}
133149
}
134150

135-
mLocalData.apply(editText);
136151

137152
editText.measure(
138153
MeasureUtil.getMeasureSpec(width, widthMode),

0 commit comments

Comments
 (0)