react native 之 获取键盘高度
多说不如多撸:
/**
* Created by shaotingzhou on 2017/2/23.
*/
/**
* Sample React Native App
* https://github.com/facebook/react-native
* @flow
*/
import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View,
Keyboard,
TextInput,
Dimensions
} from 'react-native';
var ScreenWidth = Dimensions.get('window').width;
export default class Root extends Component {
// 构造
constructor(props) {
super(props);
// 初始状态
this.state = {
keyboardHeight:0
};
}
render() {
return (
<View style={styles.container}>
<Text style={styles.welcome}>
Welcome to React Native!
</Text>
<Text style={styles.instructions}>
To get started, edit index.android.js
</Text>
<Text style={styles.instructions}>
Double tap R on your keyboard to reload,{'\n'}
Shake or press menu button for dev menu
</Text>
<Text style={styles.instructions}>
To get started, edit index.android.js
</Text>
<Text style={styles.instructions}>
Double tap R on your keyboard to reload,{'\n'}
Shake or press menu button for dev menu
</Text>
<Text style={styles.instructions}>
To get started, edit index.android.js
</Text>
<Text style={styles.instructions}>
Double tap R on your keyboard to reload,{'\n'}
Shake or press menu button for dev menu
</Text>
<Text style={styles.instructions}>
To get started, edit index.android.js
</Text>
<Text style={styles.instructions}>
Double tap R on your keyboard to reload,{'\n'}
Shake or press menu button for dev menu
</Text>
<TextInput
style={{width:ScreenWidth,height:100,borderWidth:2,marginBottom:this.state.keyboardHeight}}
/>
</View>
);
}
componentWillUnmount() {
this.keyboardDidShowListener.remove();
this.keyboardDidHideListener.remove();
}
componentWillMount() {
this.keyboardDidShowListener = Keyboard.addListener('keyboardDidShow', this._keyboardDidShow.bind(this));
this.keyboardDidHideListener = Keyboard.addListener('keyboardDidHide', this._keyboardDidHide.bind(this));
}
_keyboardDidShow(e){
this.setState({
keyboardHeight:e.startCoordinates.height
})
}
_keyboardDidHide(e){
this.setState({
keyboardHeight:0
})
}
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#F5FCFF',
},
welcome: {
fontSize: 20,
textAlign: 'center',
margin: 10,
},
instructions: {
textAlign: 'center',
color: '#333333',
marginBottom: 5,
},
});
效果:
额.后来发现个KeyboardAvoidingView,原来react native已经意识到了.所以上面的代码可以作废.使用新的KeyboardAvoidingView,其中
KeyboardAvoidingView的主要属性behavior 包含三个'height', 'position', 'padding'
大致代码如下:
1 /**2 * Sample React Native App
3 * https://github.com/facebook/react-native
4 * @flow
5 */
6
7 import React, { Component } from 'react';
8 import {
9 AppRegistry,
10 StyleSheet,
11 Text,
12 View,
13 ScrollView,
14 TextInput,
15 KeyboardAvoidingView
16 } from 'react-native';
17
18 export default class Root extends Component {
19 render() {
20 return (
21 <KeyboardAvoidingView behavior='position' >
22 <ScrollView>
23 <View style={styles.container}>
24 <Text style={styles.welcome}>
25 Welcome to React Native!
26 </Text>
27 <Text style={styles.instructions}>
28 To get started, edit index.ios.js
29 </Text>
30 <Text style={styles.instructions}>
31 Press Cmd+R to reload,{'\n'}
32 Cmd+D or shake for dev menu
33 </Text>
34 <Text style={styles.welcome}>
35 Welcome to React Native!
36 </Text>
37 <Text style={styles.instructions}>
38 To get started, edit index.ios.js
39 </Text>
40 <Text style={styles.instructions}>
41 Press Cmd+R to reload,{'\n'}
42 Cmd+D or shake for dev menu
43 </Text>
44 <Text style={styles.welcome}>
45 Welcome to React Native!
46 </Text>
47 <Text style={styles.instructions}>
48 To get started, edit index.ios.js
49 </Text>
50 <Text style={styles.instructions}>
51 Press Cmd+R to reload,{'\n'}
52 Cmd+D or shake for dev menu
53 </Text>
54 <Text style={styles.welcome}>
55 Welcome to React Native!
56 </Text>
57 <Text style={styles.instructions}>
58 To get started, edit index.ios.js
59 </Text>
60 <Text style={styles.instructions}>
61 Press Cmd+R to reload,{'\n'}
62 Cmd+D or shake for dev menu
63 </Text>
64 <Text style={styles.welcome}>
65 Welcome to React Native!
66 </Text>
67 <Text style={styles.instructions}>
68 To get started, edit index.ios.js
69 </Text>
70 <Text style={styles.instructions}>
71 KeyboardAvoidingView的主要属性behavior PropTypes.oneOf(['height', 'position', 'padding'])
72 </Text>
73 <TextInput
74 placeholder="输入框"
75 style={{width:300,height:100,borderWidth:1}}
76 />
77 </View>
78 </ScrollView>
79 </KeyboardAvoidingView>
80 );
81 }
82 }
83
84 const styles = StyleSheet.create({
85 container: {
86 flex: 1,
87 justifyContent: 'center',
88 alignItems: 'center',
89 backgroundColor: '#F5FCFF',
90 },
91 welcome: {
92 fontSize: 20,
93 textAlign: 'center',
94 margin: 10,
95 },
96 instructions: {
97 textAlign: 'center',
98 color: '#333333',
99 marginBottom: 5,
100 },
101 });
效果:
以上是 react native 之 获取键盘高度 的全部内容, 来源链接: utcz.com/z/384464.html