Реагировать-Родной неправильный размер длины в Android?

#react-native

Вопрос:

Я столкнулся с проблемой, когда, по-видимому, при использовании useWindowDimensions() в React-Native длина кратчайшего измерения неверна.

Минимальный воспроизводимый пример: Создайте приложение с нуля, используя npx react-native run-android и вставьте следующее в App.js :

 export default function App() {
  return (
    <View style={{flex: 1}}>
      <View
        style={{
          height: 100,
          width: 100,
          backgroundColor: 'red',
          position: 'absolute',
          top: useWindowDimensions().height - 20,
        }}>
      </View>
    </View>
  );
}
 

Пояснение: на экране есть изображение красного цвета размером 100 х 100, расположенное абсолютно точно. Делая top: useWindowDimensions().height - 20 это , я говорю виду переместиться полностью вниз и просто «заглянуть» на 20 dps.

В портретной ориентации это работает:

введите описание изображения здесь

Но на ландшафте это не работает. Вид не заглядывает снизу

введите описание изображения здесь

На самом деле, вид все еще скрыт внизу. Вычитания 20 с высоты экрана было недостаточно. Я поиграл и обнаружил, что мне нужно вычесть, по крайней мере 28 , чтобы сделать это видимым:

введите описание изображения здесь

What’s going on? I would have expected that useWindowDimensions().height returned 28 less than what it did. Is this a bug? Or am I missing/not considering something else?

Note: at the beginning I thought it could be because of Android’s status bar or navigation/action bar. But that doesn’t make sense…because IT WORKS with a Portrait Orientation.