7

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

这记录在 git 上:
Dimensions.get('window').height 在 Android 上有时是错误的

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

这是“getRealDimensions”的链接,但它是用 java 编写的,我不知道如何将它实现到我的 react-native android 项目中。

总结
如何在我的 react-native android 项目中实现“getRealDimensions”库?

谢谢。

4

3 回答 3

8

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

首先,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'),请查看Dimensions API 中的“窗口”和“屏幕”有什么区别

干杯

于 2018-03-05T11:32:24.860 回答
2

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

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

只需安装

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

您可能需要重新编译项目

图书馆现在正在工作!

于 2016-08-06T12:12:10.573 回答
0

有同样的问题,决定通过在视图 onlayout 回调中更新具有正确尺寸的 Redux 存储来解决它,这似乎每次都提供正确的宽度和高度,并让 redux 在需要时重新渲染视图。不过,在最新的 react native 0.49.0 中还没有看到这个问题。

于 2017-10-27T13:11:17.770 回答