在我的iOS模拟器上,它们都返回相同的值。
我理解普通浏览器的区别, 但是React Native有什么区别? 是否存在返回不同值的情况?
答案 0 :(得分:45)
有关Dimensions的文档很差(outstanding issue),因此您必须深入了解代码以了解正在发生的事情。如果您查看Dimensions的来源,您会在第47行看到此评论:
// Screen and window dimensions are different on android
如果您使用责备追溯历史记录,您会在指向this commit的相关代码部分找到this old issue,该部分本身指向this issue有关尺寸报告不同屏幕高度的内容。
我对Android本身并不了解,但从我可以收集到的内容来看,Android似乎可以报告两个不同的数字:
我的Android设备上的快速测试打印出这些值,我能够确认window
的高度< screen
的身高。window
所以很有可能,这意味着:
screen
:报告没有软菜单栏的宽度/高度我没有关注Android上的方向更改this product pain,因此我不知道旋转屏幕会如何影响这一点。
答案 1 :(得分:1)
在Android上,window
反映了可用于此应用的全部screen
中的一部分。至少在3种情况下,screen
和window
可能不同:
如果Android设备打开了设备navigation bar ,则window
的高度将比screen
的高度低一个导航器的高度。这是illustrated in this answer by RY Zheng,与该问题的答案中的链接已被删除。
如果该应用以Android's split screen/multi-window模式显示,并排显示两个应用的窗口,则window
的宽度或高度将小于{{ 1}}取决于该屏幕的宽度或高度。在PR by ThisIsMissEm上已关闭的本机文档的“文档”中,因为没有人被Facebook审查过。
如果打开应用后,Android设备的“辅助功能”设置中的"screen zoom"或"display size"设置已更改,则screen
,{{1 scale
的}}和width
属性将更新以反映缩放,而height
的属性则不会更新。如果应用重新启动,则window
screen
属性将与屏幕的属性匹配。
如果尺寸固定的元素无法在不重新启动应用程序的情况下更改屏幕缩放比例时缩放,则将这些尺寸乘以window
可能会有所帮助。
scale
的宽度和高度将等于或小于Dimensions.get('window').scale / Dimensions.get('screen').scale
;但有一个例外:如果在“显示尺寸”或“屏幕缩放”设置较高的情况下打开应用,则在应用仍打开的情况下将其设置为较低。在这种情况下,高度和宽度会变大,而window
会变低,比率相同。