React Native: обновить макет приложения после показа клавиатуры

Я сейчас работаю над общей проблемой, что клавиатура выдвигает приложение за пределы представления.

Параметр android: windowSoftInputMode = "adjustResize" не работает.

Прямо сейчас я изменяю размер в соответствии с клавиатурой вручную следующим образом:

keyboardWillShow(e) { setTimeout(()=> { this.keyboardOffset = e.endCoordinates.height; }, 500) } keyboardWillHide(e) { this.keyboardOffset = 0; } ///... const resultingHeight = windowHeight - this.keyboardOffset - Navigator.NavigationBar.Styles.General.TotalNavHeight; viewStyle = { height: resultingHeight }; 

Это почти работает. Но моя проблема заключается в том, что приложение выталкивается за пределы представления, тогда клавиатураWillShow запускается и изменяет размер представления правильно, а затем ничего не происходит. Android не обновляет макет после отображения клавиатуры.

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

EDIT: другие сообщения на SO не помогли, потому что параметр adjustResize не работает, и я использую native-native, а не native android.

    Если я помню, keyboardwillShow и keyboardWillHide не запускаются на Android .

    Это поведение должно быть родным для Android, вы пытались настроить windowSoftInputMode следующим образом и не прослушивать события?

     android:windowSoftInputMode="adjustPan" 

    Если это не работает для вас, вы можете взглянуть на KeyboardAvoidingView , новый с 0.34 . Это, кажется, решение того, что вы пытаетесь выполнить.

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

    Документы KeyboardAvoidingView

    KeyboardAvoidingView вел себя хуже, чем я ожидал, поэтому я создал собственное решение с ScrollView , которое обертывает все приложение (высота устанавливается с помощью Dimensions ), затем на любом входном клике – в зависимости от того, где находится вход (нижняя / верхняя половина экрана – С помощью UIManager.measure и TextInputState.currentlyFocusedField ), я просматриваю представление или нет – будет ли это работать для вас? (Изменение размера изображения на меньшую высоту не будет работать (хорошо выглядят) во многих случаях) – я могу предоставить некоторый код