diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java index 316fab68ad759e..5f2abfef45ae6d 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.java @@ -393,12 +393,17 @@ public static long measureText( : UNSET; int lines = layout.getLineCount(); - if (numberOfLines != UNSET && numberOfLines != 0 && numberOfLines > lines && text.length() > 0) { + if (numberOfLines != UNSET && numberOfLines != 0 && numberOfLines >= lines && text.length() > 0) { int numberOfEmptyLines = numberOfLines - lines; SpannableStringBuilder ssb = new SpannableStringBuilder(); + // for some reason a newline on end causes issues with computing height so we add a character + if (text.toString().endsWith("\n")) { + ssb.append("A"); + } + for (int i = 0; i < numberOfEmptyLines; ++i) { - ssb.append("\n"); + ssb.append("\nA"); } Object[] spans = text.getSpans(0, 0, Object.class); @@ -419,7 +424,7 @@ public static long measureText( } - if (numberOfLines != UNSET && numberOfLines != 0 && numberOfLines <= lines) { + if (numberOfLines != UNSET && numberOfLines != 0) { maximumNumberOfLines = numberOfLines; } diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java index f86923275c7bc6..981b78e5a0f570 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManagerMapBuffer.java @@ -417,8 +417,13 @@ public static long measureText( int numberOfEmptyLines = numberOfLines - lines; SpannableStringBuilder ssb = new SpannableStringBuilder(); + // for some reason a newline on end causes issues with computing height so we add a character + if (text.toString().endsWith("\n")) { + ssb.append("A"); + } + for (int i = 0; i < numberOfEmptyLines; ++i) { - ssb.append("\n"); + ssb.append("\nA"); } Object[] spans = text.getSpans(0, 0, Object.class); @@ -438,7 +443,7 @@ public static long measureText( hyphenationFrequency); } - if (numberOfLines != UNSET && numberOfLines != 0 && numberOfLines <= lines) { + if (numberOfLines != UNSET && numberOfLines != 0) { maximumNumberOfLines = numberOfLines; }