0

Я делаю свой первый шаг в реагировании на родину и пытаюсь понять макет в отношении мягкой клавиатуры.React native Scrollview/flex layout ведет себя непоследовательно после минимизации приложения на Android

Я создал новый проект с помощью реакции Rect родной инициализации и написал следующие компоненты:

<ScrollView style={{flex: 1}} contentContainerStyle={{flex: 1, borderColor: 'green', borderWidth: 10}}> 
    <TextInput/> 
    <View style={{flex: 1, borderColor: 'blue', borderWidth: 10}} /> 
</ScrollView> 

Результат выглядит так, как ожидалось, и, когда я прикасаюсь поле ввода клавиатура покрывает мой взгляд. Однако, если я скрою приложение, нажав кнопку «Квадрат/Обзор», а затем снова выберите приложение, представление будет соответствовать его высоте, поэтому клавиатура не будет закрывать вид.

Мои результаты до сих пор является то, что: - Это происходит только на Android

  • Это происходит только тогда, когда Scrollview присутствует

  • Игра вокруг с андроид: windowSoftInputMode в андроида манифеста Безразлично» t, похоже, влияет на проблему.

  • Я пытался реагировать родной: 0.39.0/реагировать: 15.4.1 и реагировать родной: 0.33.0/срабатывают: ~ 15.3.0 и он присутствует в обоих

  • Это, однако, не воспроизводимая в rnplay (0.33): https://rnplay.org/apps/kr-OQw

  • Я попытался на EXPERIA z5compact сони (Android 6.0.1), связующей 5х и Samsung Galaxy s6 (Android 6.0.1) и он присутствует во всем.

Я предполагаю, что изменение размера после минимизации является ошибкой или я что-то упустил? Есть ли способ обхода проблемы?

Recording of issue (sorry for the quality and unfortunate looping

+1

android: windowSoftInputMode: "adjustResize" должен работать. См. Здесь: https://github.com/facebook/react-native/issues/10260 – atlanteh

+0

Спасибо! Я был уверен, что я попробовал их все, но, должно быть, пропустил это, поскольку мое первоначальное намерение состояло в том, чтобы не изменять размер окна независимо от клавиатуры. Однако это делает его следствием, и это самое главное здесь. Если кто-то ищет обходное решение, в котором вы хотите постоянно изменять размер самостоятельно, вы можете установить абсолютную высоту с помощью Dimensions + https://github.com/Sunhat/react-native-extra-dimensions -android –

+0

Хотя «adjustResize» работает во всех случаях, похоже, что настройка по умолчанию «adjustUnspecified» только «срабатывает», как только пользователь минимизирует приложение, это должно быть ошибкой? –

ответ

3

по умолчанию андроид: windowSoftInputMode является adjustUnspecified, который вызывает эту проблему.

Вы можете изменить размер экрана все время, если вы установили андроид: windowSoftInputMode: «adjustResize» (Это желаемый способ в соответствии с docs).

Вы также можете следить за bug, который я открыл для реагирования.

 Смежные вопросы

  • Нет связанных вопросов^_^