React-Native Android - 如何使用getRealDimensions(尺寸不起作用)

时间:2016-07-26 14:13:43

标签: android react-native react-native-android

经过大量研究后,我发现Android的Dimensions库不能像预期的那样工作。例如,每次我使用" Dimensions.get(' window'。)height"时,我会得到不同的结果。

这是在git上记录的:
Dimensions.get('window').height is sometimes wrong on Android

解决方案是使用" getRealDimensions"如上面的git链接中提到的库。

这是the link to the 'getRealDimensions',但它是用java编写的,我不知道如何将它实现到我的react-native android项目中。

摘要
如何实施' getRealDimensions'库进入我的react-native android项目?

感谢。

3 个答案:

答案 0 :(得分:5)

对于那些仍在努力解决这个问题的人来说,这是我能给出的一个小小的见解。

首先,API react-native(0.54)似乎对Android来说是稳定的,对Dimensions.get('window')的调用每次都返回相同的值(至少从我看到的内容)。但在Android上,此调用返回的height是带有状态栏的屏幕(即屏幕顶部带有wifi图标和通知的栏)。

其次,如果您只想在没有软菜单栏的情况下获得屏幕高度,请调用StatusBar.currentHeight并从Dimensions.get('window').height给出的高度中减去此值。

这种方法相当简单,避免依赖于另一个包(即使react-native-extra-dimensions-android非常好)。

最后,如果您需要屏幕的总大小,请查看Dimensions.get('screen'),请参阅What's the difference between 'window' and 'screen' in the Dimensions API

干杯

答案 1 :(得分:2)

对于有同样问题的人,这是解决方案。真正的解决方案是react-native-extra-dimensions-android库。

该项目以前由GitHub用户Jaysoo维护,但现在由Github用户Sunhat维护

只需安装

即可
npm install react-native-extra-dimensions-android --save

您可能需要重新编译项目

图书馆现在正在运作!

答案 2 :(得分:0)

有同样的问题,决定通过在视图onlayout回调中更新具有正确尺寸的Redux商店来解决它,这似乎每次都给出正确的宽度和高度,并让redux重新渲染视图需要。最近没有看到这个问题反应原生0.49.0。