Skip to content

Commit a6a2884

Browse files
NickGerlemanfacebook-github-bot
authored andcommitted
Fix onTextLayout metrics not incorporating ReactTextViewManagerCallback (#52276)
Summary: Pull Request resolved: #52276 The line metrics reported do not process the Spannable, meaning their layout results may disagree with those used for measurement and display. Changelog: [Android][Fixed] - Fix onTextLayout metrics not incorporating ReactTextViewManagerCallback Reviewed By: lenaic Differential Revision: D77261839 fbshipit-source-id: 87bdc86ce16a2ae9fa69532c5721c19567a53595
1 parent 56ccc87 commit a6a2884

2 files changed

Lines changed: 9 additions & 3 deletions

File tree

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/fabric/FabricUIManager.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -530,13 +530,18 @@ private NativeArray measureLines(
530530
ReadableMapBuffer paragraphAttributes,
531531
float width,
532532
float height) {
533+
ViewManager textViewManager = mViewManagerRegistry.get(ReactTextViewManager.REACT_CLASS);
534+
533535
return (NativeArray)
534536
TextLayoutManager.measureLines(
535537
mReactApplicationContext,
536538
attributedString,
537539
paragraphAttributes,
538540
PixelUtil.toPixelFromDIP(width),
539-
PixelUtil.toPixelFromDIP(height));
541+
PixelUtil.toPixelFromDIP(height),
542+
textViewManager instanceof ReactTextViewManagerCallback
543+
? (ReactTextViewManagerCallback) textViewManager
544+
: null);
540545
}
541546

542547
public int getColor(int surfaceId, String[] resourcePaths) {

packages/react-native/ReactAndroid/src/main/java/com/facebook/react/views/text/TextLayoutManager.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1007,7 +1007,8 @@ internal object TextLayoutManager {
10071007
attributedString: MapBuffer,
10081008
paragraphAttributes: MapBuffer,
10091009
width: Float,
1010-
height: Float
1010+
height: Float,
1011+
reactTextViewManagerCallback: ReactTextViewManagerCallback?
10111012
): WritableArray {
10121013
val layout =
10131014
createLayoutForMeasurement(
@@ -1018,7 +1019,7 @@ internal object TextLayoutManager {
10181019
YogaMeasureMode.EXACTLY,
10191020
height,
10201021
YogaMeasureMode.EXACTLY,
1021-
null /* TODO T226571550: Fix measureLines with ReactTextViewManagerCallback */)
1022+
reactTextViewManagerCallback)
10221023
return FontMetricsUtil.getFontMetrics(layout.text, layout, context)
10231024
}
10241025

0 commit comments

Comments
 (0)