From adaf2bf2776eefc6be004067adaab2e1fdc18f01 Mon Sep 17 00:00:00 2001 From: Jonas Lundberg Date: Tue, 30 May 2017 18:54:37 -0700 Subject: [PATCH] Android: Make lineHeight accept decimal values Summary: Make android-version accept a decimal number as lineHeight. Credits where due, solution was given in this issue: facebook/react-native#10607 According to the w3 spec the property line-height should accept decimal values (and it does on iOS) but the android version has the wrong data-type for the shadowed method, resulting in a stacktrace saying: com.facebook.react.bridge.UnexpectedNativeTypeException: TypeError: expected dynamic type `int64', but had type `double' Setting it to a float makes it accept decmial values as it should. * Create an app without this commit and create the same app with this commit: In both apps: - Leave line-height undefined. Behavior is unaffected by this commit. - Set lineHeight to a integer number. Behavior is unaffected by this commit. - Set lineHeight to a decimal number. Line height is now rendered with decimals in the app with this fix. * Run android integration tests to see nothing else broke. Sign the [CLA][2], if you haven't already. Small pull requests are much easier to review and more likely to get merged. Make sure the PR does only one thing, otherwise please split it. Make sure all **tests pass** on both [Travis][3] and [Circle CI][4]. PRs that break tests are unlikely to be merged. For more info, see the ["Pull Requests"][5] section of our "Contributing" guidelines. [1]: https://medium.com/martinkonicek/what-is-a-test-plan-8bfc840ec171#.y9lcuqqi9 [2]: https://code.facebook.com/cla [3]: https://travis-ci.org/facebook/react-native [4]: http://circleci.com/gh/facebook/react-native [5]: https://github.com/facebook/react-native/blob/master/CONTRIBUTING.md#pull-requests Closes https://github.com/facebook/react-native/pull/13843 Differential Revision: D5152982 Pulled By: shergin fbshipit-source-id: cda3b72497a6c27d6948b31ec846640a8913775a --- .../com/facebook/react/views/text/ReactTextShadowNode.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java index dbdcc2963b6..97408da5a27 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java +++ b/ReactAndroid/src/main/java/com/facebook/react/views/text/ReactTextShadowNode.java @@ -339,7 +339,7 @@ public class ReactTextShadowNode extends LayoutShadowNode { protected int mNumberOfLines = UNSET; protected int mFontSize = UNSET; protected float mFontSizeInput = UNSET; - protected int mLineHeightInput = UNSET; + protected float mLineHeightInput = UNSET; protected int mTextAlign = Gravity.NO_GRAVITY; protected int mTextBreakStrategy = (Build.VERSION.SDK_INT < Build.VERSION_CODES.M) ? 0 : Layout.BREAK_STRATEGY_HIGH_QUALITY; @@ -441,8 +441,8 @@ public class ReactTextShadowNode extends LayoutShadowNode { markUpdated(); } - @ReactProp(name = ViewProps.LINE_HEIGHT, defaultInt = UNSET) - public void setLineHeight(int lineHeight) { + @ReactProp(name = ViewProps.LINE_HEIGHT, defaultFloat = UNSET) + public void setLineHeight(float lineHeight) { mLineHeightInput = lineHeight; if (lineHeight == UNSET) { mLineHeight = Float.NaN;