mirror of
https://github.com/zhigang1992/react-native.git
synced 2026-04-30 05:55:48 +08:00
Share fontsize and numberoflines props between text and inputtext shadow nodes.
Differential Revision: D2540451 fb-gh-sync-id: 289eeaed6881efe429124a0e69195a025ac3cbb8
This commit is contained in:
committed by
facebook-github-bot-7
parent
ad4f589b65
commit
8486a68b91
@@ -237,12 +237,14 @@ public class ReactTextShadowNode extends LayoutShadowNode {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private int mLineHeight = UNSET;
|
private int mLineHeight = UNSET;
|
||||||
private int mNumberOfLines = UNSET;
|
|
||||||
private boolean mIsColorSet = false;
|
private boolean mIsColorSet = false;
|
||||||
private int mColor;
|
private int mColor;
|
||||||
private boolean mIsBackgroundColorSet = false;
|
private boolean mIsBackgroundColorSet = false;
|
||||||
private int mBackgroundColor;
|
private int mBackgroundColor;
|
||||||
private int mFontSize = UNSET;
|
|
||||||
|
protected int mNumberOfLines = UNSET;
|
||||||
|
protected int mFontSize = UNSET;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* mFontStyle can be {@link Typeface#NORMAL} or {@link Typeface#ITALIC}.
|
* mFontStyle can be {@link Typeface#NORMAL} or {@link Typeface#ITALIC}.
|
||||||
* mFontWeight can be {@link Typeface#NORMAL} or {@link Typeface#BOLD}.
|
* mFontWeight can be {@link Typeface#NORMAL} or {@link Typeface#BOLD}.
|
||||||
|
|||||||
@@ -22,13 +22,11 @@ import com.facebook.csslayout.MeasureOutput;
|
|||||||
import com.facebook.csslayout.Spacing;
|
import com.facebook.csslayout.Spacing;
|
||||||
import com.facebook.infer.annotation.Assertions;
|
import com.facebook.infer.annotation.Assertions;
|
||||||
import com.facebook.react.common.annotations.VisibleForTesting;
|
import com.facebook.react.common.annotations.VisibleForTesting;
|
||||||
import com.facebook.react.uimanager.CatalystStylesDiffMap;
|
|
||||||
import com.facebook.react.uimanager.PixelUtil;
|
import com.facebook.react.uimanager.PixelUtil;
|
||||||
import com.facebook.react.uimanager.ReactProp;
|
import com.facebook.react.uimanager.ReactProp;
|
||||||
import com.facebook.react.uimanager.ThemedReactContext;
|
import com.facebook.react.uimanager.ThemedReactContext;
|
||||||
import com.facebook.react.uimanager.UIViewOperationQueue;
|
import com.facebook.react.uimanager.UIViewOperationQueue;
|
||||||
import com.facebook.react.uimanager.ViewDefaults;
|
import com.facebook.react.uimanager.ViewDefaults;
|
||||||
import com.facebook.react.uimanager.ViewProps;
|
|
||||||
import com.facebook.react.views.text.ReactTextShadowNode;
|
import com.facebook.react.views.text.ReactTextShadowNode;
|
||||||
|
|
||||||
@VisibleForTesting
|
@VisibleForTesting
|
||||||
@@ -40,14 +38,11 @@ public class ReactTextInputShadowNode extends ReactTextShadowNode implements
|
|||||||
View.MeasureSpec.UNSPECIFIED);
|
View.MeasureSpec.UNSPECIFIED);
|
||||||
|
|
||||||
private @Nullable EditText mEditText;
|
private @Nullable EditText mEditText;
|
||||||
private int mFontSize;
|
|
||||||
private @Nullable float[] mComputedPadding;
|
private @Nullable float[] mComputedPadding;
|
||||||
private int mJsEventCount = UNSET;
|
private int mJsEventCount = UNSET;
|
||||||
private int mNumLines = UNSET;
|
|
||||||
|
|
||||||
public ReactTextInputShadowNode() {
|
public ReactTextInputShadowNode() {
|
||||||
super(false);
|
super(false);
|
||||||
mFontSize = (int) Math.ceil(PixelUtil.toPixelFromSP(ViewDefaults.FONT_SIZE_SP));
|
|
||||||
setMeasureFunction(this);
|
setMeasureFunction(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -77,7 +72,10 @@ public class ReactTextInputShadowNode extends ReactTextShadowNode implements
|
|||||||
EditText editText = Assertions.assertNotNull(mEditText);
|
EditText editText = Assertions.assertNotNull(mEditText);
|
||||||
|
|
||||||
measureOutput.width = width;
|
measureOutput.width = width;
|
||||||
editText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mFontSize);
|
editText.setTextSize(
|
||||||
|
TypedValue.COMPLEX_UNIT_PX,
|
||||||
|
mFontSize == UNSET ?
|
||||||
|
(int) Math.ceil(PixelUtil.toPixelFromSP(ViewDefaults.FONT_SIZE_SP)) : mFontSize);
|
||||||
mComputedPadding = spacingToFloatArray(getStylePadding());
|
mComputedPadding = spacingToFloatArray(getStylePadding());
|
||||||
editText.setPadding(
|
editText.setPadding(
|
||||||
(int) Math.ceil(getStylePadding().get(Spacing.LEFT)),
|
(int) Math.ceil(getStylePadding().get(Spacing.LEFT)),
|
||||||
@@ -85,8 +83,8 @@ public class ReactTextInputShadowNode extends ReactTextShadowNode implements
|
|||||||
(int) Math.ceil(getStylePadding().get(Spacing.RIGHT)),
|
(int) Math.ceil(getStylePadding().get(Spacing.RIGHT)),
|
||||||
(int) Math.ceil(getStylePadding().get(Spacing.BOTTOM)));
|
(int) Math.ceil(getStylePadding().get(Spacing.BOTTOM)));
|
||||||
|
|
||||||
if (mNumLines != UNSET) {
|
if (mNumberOfLines != UNSET) {
|
||||||
editText.setLines(mNumLines);
|
editText.setLines(mNumberOfLines);
|
||||||
}
|
}
|
||||||
|
|
||||||
editText.measure(MEASURE_SPEC, MEASURE_SPEC);
|
editText.measure(MEASURE_SPEC, MEASURE_SPEC);
|
||||||
@@ -99,21 +97,11 @@ public class ReactTextInputShadowNode extends ReactTextShadowNode implements
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ReactProp(name = ViewProps.FONT_SIZE, defaultFloat = ViewDefaults.FONT_SIZE_SP)
|
|
||||||
public void setFontSize(float fontSize) {
|
|
||||||
mFontSize = (int) Math.ceil(PixelUtil.toPixelFromSP(fontSize));
|
|
||||||
}
|
|
||||||
|
|
||||||
@ReactProp(name = "mostRecentEventCount")
|
@ReactProp(name = "mostRecentEventCount")
|
||||||
public void setMostRecentEventCount(int mostRecentEventCount) {
|
public void setMostRecentEventCount(int mostRecentEventCount) {
|
||||||
mJsEventCount = mostRecentEventCount;
|
mJsEventCount = mostRecentEventCount;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ReactProp(name = ViewProps.NUMBER_OF_LINES, defaultInt = UNSET)
|
|
||||||
public void setNumberOfLines(int numberOfLines) {
|
|
||||||
mNumLines = numberOfLines;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onCollectExtraUpdates(UIViewOperationQueue uiViewOperationQueue) {
|
public void onCollectExtraUpdates(UIViewOperationQueue uiViewOperationQueue) {
|
||||||
super.onCollectExtraUpdates(uiViewOperationQueue);
|
super.onCollectExtraUpdates(uiViewOperationQueue);
|
||||||
|
|||||||
Reference in New Issue
Block a user