diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/BUCK b/ReactAndroid/src/main/java/com/facebook/react/uimanager/BUCK index 4c3aa2d70..3a0956b27 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/BUCK +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/BUCK @@ -18,6 +18,7 @@ android_library( react_native_target('java/com/facebook/react/animation:animation'), react_native_target('java/com/facebook/react/bridge:bridge'), react_native_target('java/com/facebook/react/common:common'), + react_native_target('java/com/facebook/react/modules/i18nmanager:i18nmanager'), react_native_target('java/com/facebook/react/touch:touch'), react_native_target('java/com/facebook/react/uimanager/annotations:annotations'), ], diff --git a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java index b1d52cf0f..729077313 100644 --- a/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java +++ b/ReactAndroid/src/main/java/com/facebook/react/uimanager/UIImplementation.java @@ -14,6 +14,7 @@ import java.util.Arrays; import java.util.List; import com.facebook.csslayout.CSSLayoutContext; +import com.facebook.csslayout.CSSDirection; import com.facebook.infer.annotation.Assertions; import com.facebook.react.animation.Animation; import com.facebook.react.bridge.Arguments; @@ -23,6 +24,7 @@ import com.facebook.react.bridge.ReadableArray; import com.facebook.react.bridge.ReadableMap; import com.facebook.react.bridge.UiThreadUtil; import com.facebook.react.bridge.WritableArray; +import com.facebook.react.modules.i18nmanager.I18nUtil; import com.facebook.react.uimanager.debug.NotThreadSafeViewHierarchyUpdateDebugListener; import com.facebook.react.uimanager.events.EventDispatcher; import com.facebook.systrace.Systrace; @@ -40,6 +42,7 @@ public class UIImplementation { private final UIViewOperationQueue mOperationsQueue; private final NativeViewHierarchyOptimizer mNativeViewHierarchyOptimizer; private final int[] mMeasureBuffer = new int[4]; + private final ReactApplicationContext mReactContext; public UIImplementation(ReactApplicationContext reactContext, List viewManagers) { this(reactContext, new ViewManagerRegistry(viewManagers)); @@ -47,13 +50,16 @@ public class UIImplementation { private UIImplementation(ReactApplicationContext reactContext, ViewManagerRegistry viewManagers) { this( + reactContext, viewManagers, new UIViewOperationQueue(reactContext, new NativeViewHierarchyManager(viewManagers))); } protected UIImplementation( + ReactApplicationContext reactContext, ViewManagerRegistry viewManagers, UIViewOperationQueue operationsQueue) { + mReactContext = reactContext; mViewManagers = viewManagers; mOperationsQueue = operationsQueue; mNativeViewHierarchyOptimizer = new NativeViewHierarchyOptimizer( @@ -63,6 +69,10 @@ public class UIImplementation { protected ReactShadowNode createRootShadowNode() { ReactShadowNode rootCSSNode = new ReactShadowNode(); + I18nUtil sharedI18nUtilInstance = I18nUtil.getInstance(); + if (sharedI18nUtilInstance.isRTL(mReactContext)) { + rootCSSNode.setDirection(CSSDirection.RTL); + } rootCSSNode.setViewClassName("Root"); return rootCSSNode; }