Sam*_*Sam 8 javascript reactjs react-native
我希望它们的所有子视图都以一种干净的动作移动,但是如果您查看 gif,您可以看到 Text 子视图和 TextInput 子视图重叠并以不同的速度移动。看起来 Text 子视图会立即调整其位置,而按钮和 TextInput 子视图以更轻松的缓中缓出方式调整其位置。
主要导出组件
class SearchScreen extends React.Component {
state = {search:""}
render(){
getArguments = {
search: this.state.search
}
return (
<KeyboardAvoidingView behavior="padding" style={styles.container}>
<Text style={styles.searchTitle}>Search for a Movie in the OMDB Database</Text>
<TextInput style={styles.searchField} onChangeText={text => this.setState({search:text})} ></TextInput>
<SearchButton navigation = {this.props.navigation} getArguments={getArguments}/>
</KeyboardAvoidingView>
)
}
}
Run Code Online (Sandbox Code Playgroud)
造型
const styles = StyleSheet.create({
container: {
flex:1,
backgroundColor: '#C8FEFE',
alignItems: 'center',
justifyContent: 'center'
},
searchButton: {
marginTop: 20,
backgroundColor: '#24D9E8',
borderRadius: 5,
padding: 5
},
searchField: {
backgroundColor: '#FFF',
textAlign: 'center',
width: 200,
borderRadius: 5,
margin: 20,
height: 30
},
searchTitle:{
fontWeight: 'bold',
fontSize: 20,
textAlign:'center'
}
});
Run Code Online (Sandbox Code Playgroud)
GitHub
解决方案 1:iOS 快速修复
您可以将元素包装在视图中,这将使它们按照您想要的方式对键盘做出反应:
// styles
contentContainer: {
alignItems: 'center',
}
// SearchScreen
<View style={styles.contentContainer}>
<Text style={styles.searchTitle}>Search for a Movie in the OMDB Database</Text>
<TextInput style={styles.searchField} onChangeText={text => this.setState({search:text})} ></TextInput>
<SearchButton navigation = {this.props.navigation} getArguments={getArguments}/>
</View>
Run Code Online (Sandbox Code Playgroud)
但是,这仅适用于 iOS。Android 上的键盘工作方式略有不同。所以解决方案 2 是一种更可靠的做事方式。
解决方案 2:动画
避免键盘是相当棘手的, Dominik 提到的Spencer Carli 的文章是使用KeyboardAvoidingView
. 这些通常会给你你需要的东西。但如果您希望键盘状态之间实现平滑、受控的过渡,则应该使用动画。流程如下:
keyboardDidShow
和keyboardDidHide
)Animated.View
keyboardDidShow
对 的 y 位置进行动画处理。Animated.View
返回的事件(类型为KeyboardEvent
)以及Dimensions
API 具有您需要的所有测量值。提示:使用Animated.timing
带有贝塞尔曲线的动画Easing
来控制视图的移动方式。keyboardDidHide
,重复动画,但方向相反。希望这可以帮助!
归档时间: |
|
查看次数: |
1246 次 |
最近记录: |