Я использовал createMaterialTopTabNavigator для создания TopTabNavigator. Этот навигатор вкладок имеет две страницы, каждая страница имеет несколько полей TextInput внутри. Обе вкладки используют один и тот же компонент, но их поведение отличается Android. Когда клавиатура появляется после фокуса TextInput, экран перемещается вверх на первой вкладке, но на второй вкладке экран остается неподвижным, а клавиатура скрывает TextInput. Я уже изменил тег активности в AndroidManifest. xml на android:windowSoftInputMode="adjustPan"
, но эта функция не работает для второй вкладки.
Вот упрощенный пример кода:
const Test = props => {
return (
<View style={{ flex: 1}}>
<TextInput placeholder="test 1" />
<TextInput placeholder="test 2" />
<TextInput placeholder="test 1" />
<TextInput placeholder="test 2" />
<TextInput placeholder="test 1" />
<TextInput placeholder="test 2" />
<TextInput placeholder="test 1" />
<TextInput placeholder="test 2" />
<TextInput placeholder="test 1" />
<TextInput placeholder="test 2" />
<TextInput placeholder="test 1333" />
</View>
);
};
const TopTabNavigator = createMaterialTopTabNavigator(
{
Tab1: { screen: Test },
Tab2: { screen: Test }
}
);
export default createAppContainer(TopTabNavigator);