Я нашел обходной путь для этого.
Основная идея состоит в том, чтобы установить высоту просмотра с текстами и полями ввода , чтобы точно соответствовать высоте экранаминус вид, который содержит кнопки .
Задача состоит в том, чтобы рассчитать эту высоту.Мне помог ответ Абхишека Кумара (https://stackoverflow.com/a/41398953/4109477) См. Мой код ниже:
import { View, ScrollView, Text, TouchableOpacity, Dimensions } from 'react-native';
const screenHeight = Dimensions.get('window').height;
class MyClass extends React.Component {
constructor(props) {
super(props);
this.state = {buttonViewHeight: 0};
}
find_dimesions(layout){
this.setState({buttonViewHeight: layout.height});
}
render() {
return (
<View style={{minHeight: screenHeight, flex: 1, alignItems: 'center'}}>
<ScrollView style={{minHeight: screenHeight}}>
<View style={{minHeight: screenHeight}}>
<View style={{minHeight: screenHeight - this.state.buttonViewHeight, borderWidth: 2, borderColor: 'red', alignItems: 'center', flex: 1}]}>
<Text>Some text with different length in different cases, or some input fileds.</Text>
</View>
<View onLayout={(event) => { this.find_dimesions(event.nativeEvent.layout) }} style={{paddingBottom: 50, flex: 1, borderWidth: 2, borderColor: 'green'}}>
<TouchableOpacity
style={[commonStyles.greenButton, styles.buttonPadding]} >
<Text style={commonStyles.greenButtonTitle}>Next</Text>
</TouchableOpacity>
<TouchableOpacity
style={styles.cancelButtonContainer} >
<Text style={styles.cancelButton}>Cancel</Text>
</TouchableOpacity>
</View>
</View>
</ScrollView>
</View>
}
}
На рисунке ниже вы можете увидеть результат
Это решение будет вызывать эффект, подобный анимации, поскольку представление визуализируется несколько раз из-за изменения высоты представления. Вид кнопки «исчезает» при открытии экрана.
Если вы найдете лучшее решение, пожалуйста, дайте мне знать!