经过大量研究后,我发现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项目?
感谢。
答案 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。