diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.java index 748f9c18f97..b5d384bcf5f 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/ViewProps.java @@ -75,7 +75,7 @@ public class ViewProps { public static final String LINE_HEIGHT = "lineHeight"; public static final String NEEDS_OFFSCREEN_ALPHA_COMPOSITING = "needsOffscreenAlphaCompositing"; public static final String NUMBER_OF_LINES = "numberOfLines"; - public static final String LINE_BREAK_MODE = "ellipsizeMode"; + public static final String ELLIPSIZE_MODE = "ellipsizeMode"; public static final String ON = "on"; public static final String RESIZE_MODE = "resizeMode"; public static final String TEXT_ALIGN = "textAlign"; 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 819db6c69ec..cd7ea1acf1b 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 @@ -13,12 +13,16 @@ import android.content.Context; import android.graphics.drawable.Drawable; import android.text.Layout; import android.text.Spanned; +import android.text.TextUtils; import android.view.Gravity; import android.view.ViewGroup; import android.widget.TextView; import com.facebook.csslayout.FloatUtil; import com.facebook.react.uimanager.ReactCompoundView; +import com.facebook.react.uimanager.ViewDefaults; + +import javax.annotation.Nullable; public class ReactTextView extends TextView implements ReactCompoundView { @@ -31,6 +35,8 @@ public class ReactTextView extends TextView implements ReactCompoundView { private boolean mTextIsSelectable; private float mLineHeight = Float.NaN; private int mTextAlign = Gravity.NO_GRAVITY; + private int mNumberOfLines = ViewDefaults.NUMBER_OF_LINES; + private TextUtils.TruncateAt mEllipsizeLocation = TextUtils.TruncateAt.END; public ReactTextView(Context context) { super(context); @@ -213,4 +219,18 @@ public class ReactTextView extends TextView implements ReactCompoundView { } setGravity((getGravity() & ~Gravity.VERTICAL_GRAVITY_MASK) | gravityVertical); } + + public void setNumberOfLines(int numberOfLines) { + mNumberOfLines = numberOfLines == 0 ? ViewDefaults.NUMBER_OF_LINES : numberOfLines; + setMaxLines(mNumberOfLines); + } + + public void setEllipsizeLocation(TextUtils.TruncateAt ellipsizeLocation) { + mEllipsizeLocation = ellipsizeLocation; + } + + public void updateView() { + @Nullable TextUtils.TruncateAt ellipsizeLocation = mNumberOfLines == ViewDefaults.NUMBER_OF_LINES ? null : mEllipsizeLocation; + setEllipsize(ellipsizeLocation); + } } diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.java index 03daf49313c..f222e393688 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextViewManager.java @@ -18,7 +18,6 @@ import android.widget.TextView; import com.facebook.react.bridge.JSApplicationIllegalArgumentException; import com.facebook.react.uimanager.BaseViewManager; -import com.facebook.react.uimanager.PixelUtil; import com.facebook.react.uimanager.annotations.ReactProp; import com.facebook.react.uimanager.ThemedReactContext; import com.facebook.react.uimanager.ViewDefaults; @@ -51,22 +50,19 @@ public class ReactTextViewManager extends BaseViewManager getShadowNodeClass() { return ReactTextShadowNode.class; } + + @Override + protected void onAfterUpdateTransaction(ReactTextView view) { + super.onAfterUpdateTransaction(view); + view.updateView(); + } }