我想建立一个登录屏幕,但是登录按钮在不同设备上的位置不同。我似乎登录框也不一定总是与顶部保持30%的距离,但我不确定。 我使用EStyleSheet来计算距离百分比。 请帮助我不知道如何解决此问题。
这是我的代码:
import React from 'react';
import {
StyleSheet,
Text,
View,
Button,
Alert,
TouchableOpacity,
TextInput,
Switch,
Image,
SafeAreaView
} from 'react-native';
import EStyleSheet from 'react-native-extended-stylesheet';
import { StackNavigator } from 'react-navigation';
const util = require('util');
EStyleSheet.build({
$textColor: 'white'
});
export default class loginScreen extends React.Component {
constructor(props) {
super(props);
this.state = { isActive: true }
}
static navigationOptions = {
title: 'Login',
header: null,
};
render() {
var {navigate} = this.props.navigation;
return (
<View style={styles.container}>
<View style={{height: '100%',width: '100%',alignItems:'center'}}>
<Text style={styles.loginText}>Thats the first line of text!</Text>
<View style={styles.loginView}>
<View style={{width: '100%', height: 8, backgroundColor: 'red',}}></View>
<Text style={styles.loginViewText}>LOGIN</Text>
<View style={{top: '35%',}} >
<TextInput style={styles.emailfield} underlineColorAndroid="transparent" placeholder="E-mail" />
<TextInput style={styles.passwordfield} underlineColorAndroid="transparent" secureTextEntry={true} placeholder="Passwort" />
</View>
<View style={styles.rememberView} ><Switch style={styles.switch} value={this.state.isActive} onValueChange={(val) => this.setState({isActive: val})}/>
<Text style={styles.rememberMe}>Remember me</Text></View>
</View>
<View style={styles.ButtonView} pointerEvents='box-none'>
<TouchableOpacity
style={styles.loginScreenButton}
onPress={() => navigate('Second', {})}>
<Image style={{width: 80, height: 80, }} source={require("../assets/LoginButton.png")}/>
</TouchableOpacity>
</View>
</View>
<View style={styles.createAcc}></View>
</View>
);
}
}
const styles = EStyleSheet.create({
container: {
width: '100%',
height: '100%',
backgroundColor: 'white',
},
loginScreenButton:{
position: 'absolute',
right: '5%',
bottom: '25%',
shadowColor: '#000000',
shadowOffset: { width: 0, height: 15 },
shadowOpacity: 0.1,
shadowRadius: 18,
elevation: 2,
},
loginText:{
textAlign:'center',
width: 350,
top: '20%',
fontSize: 36,
},
passwordfield:{
width: 200,
fontSize: 18,
borderBottomColor: 'grey',
borderBottomWidth: 1,
marginTop: 30,
},
emailfield:{
width: 200,
fontSize: 18,
borderBottomColor: 'grey',
borderBottomWidth: 1,
},
loginView:{
top: '30%',
height: '30%',
minHeight: 250,
width: 300,
backgroundColor: 'white',
shadowColor: '#000000',
shadowOffset: { width: 0, height: 15 },
shadowOpacity: 0.1,
shadowRadius: 18,
elevation: 2,
borderRadius: 8,
alignItems: 'center',
},
loginViewText:{
fontSize: 30,
left: '8%',
top: '8%',
position: 'absolute',
fontWeight: 'bold',
},
rememberMe:{
position: 'absolute',
left: '30%',
},
switch:{
left: '8%',
position: 'absolute',
},
rememberView:{
width: 300,
height: 50,
position: 'absolute',
bottom: 0,
justifyContent: 'center',
},
createAcc:{
shadowColor: '#000000',
shadowOffset: { width: 0, height: 15 },
shadowOpacity: 0.1,
shadowRadius: 18,
elevation: 2,
},
ButtonView:{
height: '30%',
minHeight: 250,
width: 300,
alignItems: 'center',
}
});