首页 > 解决方案 > 如何在 react-native / expo 中使用Dimensions获得真实的屏幕分辨率并设置应用程序样式?

问题描述

我正在开发一个 react-native/expo 应用程序。昨天我到了造型阶段才知道

Dimensions.get('window').width

返回我的设备(一个 android,一个 iPad)的实际宽度的一半,但模拟的 android 设备的实际宽度。它看起来像物理设备以某种半/半分辨率模式运行应用程序。

不得不说,它完全破坏了我对应用程序进行样式设置的想法,因为我使用 EStyleSheet (react-native-extended-stylesheet) 进行动态样式构建,这取决于Dimensions 获得的值以及诸如maxWidth之类的东西不会做很多有道理,是吗?

有什么方法可以强制 react-native/expo 应用程序以“全分辨率”运行?

谢谢!

标签: react-nativeexporesolutionreact-native-stylesheet

解决方案


如果您正在考虑为什么在设备的屏幕分辨率为 1080p 时获得类似 420 的宽度,答案是 React Native 使用与密度无关的像素作为测量单位。并且Dimensions api 还返回基于密度独立像素的值,而不是屏幕分辨率。

您唯一应该担心的是状态栏和导航栏。您可以阅读这些答案以获得明确的答案:

(React Native 也不希望您再使用Dimensions api。您可以使用useWindowDimensions,因为它会在屏幕旋转等时发生变化。)

高度和宽度 - React Native Docs

像素密度

Android 导航栏高度 React-Native

在本机反应中获取屏幕 DPI

useWindowDimensions - React Native Docs


推荐阅读