Skip to content

Commit af5906c

Browse files
committed
uses getRealMetrics on display to get real height metrics
1 parent cdb86a6 commit af5906c

File tree

1 file changed

+22
-0
lines changed

1 file changed

+22
-0
lines changed

ReactAndroid/src/main/java/com/facebook/react/uimanager/UIManagerModule.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,13 +9,18 @@
99

1010
package com.facebook.react.uimanager;
1111

12+
import java.lang.reflect.InvocationTargetException;
1213
import javax.annotation.Nullable;
1314

1415
import java.util.Arrays;
1516
import java.util.List;
1617
import java.util.Map;
1718

19+
import android.content.Context;
20+
import android.os.Build;
1821
import android.util.DisplayMetrics;
22+
import android.view.Display;
23+
import android.view.WindowManager;
1924

2025
import com.facebook.csslayout.CSSLayoutContext;
2126
import com.facebook.infer.annotation.Assertions;
@@ -85,6 +90,23 @@ public UIManagerModule(
8590
super(reactContext);
8691
mEventDispatcher = new EventDispatcher(reactContext);
8792
DisplayMetrics displayMetrics = reactContext.getResources().getDisplayMetrics();
93+
94+
// Get the real display metrics if we are using API level 17 or higher.
95+
// The real metrics include system decor elements (e.g. soft menu bar).
96+
//
97+
// See: http://developer.android.com/reference/android/view/Display.html#getRealMetrics(android.util.DisplayMetrics)
98+
if (Build.VERSION.SDK_INT >= 17) {
99+
WindowManager wm = (WindowManager)reactContext.getApplicationContext().getSystemService(Context.WINDOW_SERVICE);
100+
101+
try {
102+
Display display = wm.getDefaultDisplay();
103+
Display.class.getMethod("getRealMetrics", DisplayMetrics.class).invoke(display, displayMetrics);
104+
} catch (InvocationTargetException e) {
105+
} catch (IllegalAccessException e) {
106+
} catch (NoSuchMethodException e) {
107+
}
108+
}
109+
88110
DisplayMetricsHolder.setDisplayMetrics(displayMetrics);
89111
mModuleConstants = createConstants(displayMetrics, viewManagerList);
90112
mUIImplementation = uiImplementation;

0 commit comments

Comments
 (0)