Как определить, нет ли на устройстве Android физических или экранных кнопок? - PullRequest
0 голосов
/ 16 мая 2019

Многие телефоны Android, такие как Google Pixel 3 и Xiaomi Mi Mix 2 и т. Д., Не имеют экранных или физических кнопок навигации, они работают с жестами.В React-Native это огромная проблема, потому что, если я определяю высоту экрана, на современных устройствах это оставляет пустой экран снизу.

Я пробовал это решение, оно отлично работаетс устройствами с аппаратными или экранными кнопками, но возвращает null для современных устройств без кнопок. Определите, отображаются ли аппаратные кнопки на экране в React Native

Моя текущая версия RN: 0.59.5

Изображение: Это снимок экрана пользовательского интерфейса из MI MIX2

Ответы [ 2 ]

0 голосов
/ 10 июня 2019

Можно сравнить разницу между устройством и высотой окна (можно использовать):

import {Dimensions} from 'react-native';

let deviceHeight = Dimensions.get('screen').height;
let windowHeight = Dimensions.get('window').height;
let bottomNavBarHeight = deviceHeight - windowHeight;
if (bottomNavBarHeight > 0) {
    // onscreen navbar
} else {
    // not onscreen navbar
}
0 голосов
/ 16 мая 2019

Ну, вы могли бы использовать react-native-device-info, чтобы собрать модель мобильного устройства и другие детали, чтобы вы могли отфильтровать те современные мобильные устройства, которые не поддерживают экранную или аппаратную кнопку возврата, и работать с этими мобильными устройствами с помощью вашего пользовательского сниппет.

Я полагаю, что вы используете Flexbox и Dimensions от React Native Api для управления отзывчивостью вашего приложения.

Кроме того, было бы лучше, если бы вы могли поделиться скриншотом пользовательского интерфейса и кодовой базой, которую вы использовали до сих пор.

...