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

React-Native Android - How to use getRealDimensions (Dimensions is not working)

经过大量研究,我发现 Android 的 Dimensions 库无法正常工作。例如,每次我使用 "Dimensions.get('window').height",我都会得到不同的结果。

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

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

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

总结
如何将 'getRealDimensions' 库实现到我的 react-native android 项目中?

谢谢。

对于遇到相同问题的任何人,这里是解决方案。真正的解决方案是 react-native-extra-dimensions-android 库。

该项目之前由 GitHub 用户 Jaysoo, but is now maintained by Github user Sunhat

维护

只需安装

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

您可能需要重新编译项目

图书馆正在运作!

有同样的问题,决定通过在视图 onlayout 回调中使用正确的尺寸更新 Redux 存储来解决这个问题,这似乎每次都给出正确的宽度和高度,并让 redux 重新渲染如果需要的话。虽然在最新的 react native 0.49.0 中没有看到这个问题。

对于那些仍在为这个问题苦苦挣扎的人,我可以提供一些小见解。

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

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

这个方法相当简单并且避免了对另一个包的依赖(尽管 react-native-extra-dimensions-android 真的很好)。

最后,如果您需要屏幕的总大小,请查看 Dimensions.get('screen'),请参阅

干杯