为什么我的占位符不会出现在TextInput

时间:2017-06-21 19:20:07

标签: javascript ios reactjs react-native expo

我看不出为什么占位符不会出现在<TextInput>的两个上。此外,当用户键入内容时,这些<TextInput>框中不会显示任何内容。我想知道为什么会这样。

以下是App.js

import React, {Component} from 'react';
import {View, StyleSheet} from 'react-native';
import BackGround from './components/BackGround';

export default class App extends Component {
    render() {
        return(
            <View style={styles.back}>
                <BackGround/>
            </View>
        );
    }
}

const styles = StyleSheet.create({
    back: {
        flex: 1
    }
});

以下是Login.js

import React, {Component} from 'react';
import {StyleSheet, TextInput, View, Text, TouchableOpacity} from 'react-native';

class Login extends Component {
    render() {
        return(
            <View>
                <TextInput
                    placeholder={"Email"}
                    placeholderTextColor={"#E365F4"}
                    style={styles.input}
                />

                <TextInput
                    placeholder={"Password"}
                    placeholderTextColor={"#f44242"}
                    style={styles.input}
                />

                <TouchableOpacity>
                    <Text style={styles.loginAndCA}>Login</Text>
                </TouchableOpacity>

                <TouchableOpacity>
                    <Text style={styles.loginAndCA}>Create Account</Text>
                </TouchableOpacity>
            </View>
        );
    }
}

const styles = StyleSheet.create({
    input: {
        backgroundColor: 'green',
        paddingBottom: 20,
        padding: 20,
        paddingHorizontal: 150,
        marginBottom: 10
    },

    loginAndCA: {
        fontSize: 40,
        textAlign: 'center',
        color: 'white',
        fontFamily: 'Bodoni 72 Smallcaps'
    }
});

export default Login;

以下是BackGround.js

import React, {Component} from 'react';
import {StyleSheet, Image, View} from 'react-native';
import Login from './Login';

export default class BackGround extends Component {
    render() {
        return(
            <View style={styles.first}>
                <Image style={styles.container} source={require('../pictures/smoke.jpg')}>
                    <View style={styles.second}>
                        <Login/>
                    </View>
                </Image>
            </View>
        );
    }
}

const styles = StyleSheet.create({
    container: {
        flex: 1,
        justifyContent: 'center',
        alignItems: 'center',
        width: null,
        height: null,
        backgroundColor: 'rgba(0,0,0,0)',
        resizeMode: 'cover'
        // resizeMode: 'contain' // Shows image completely.
    },

    first: {
        flex: 1
    },

    second: {
       paddingTop: 290 // Moves both <TextInput> boxes down.
    }

});`

1 个答案:

答案 0 :(得分:0)

这里有三个问题,它们都与你的造型有关。

  1. 通过使用paddingBottom: 20padding: 20,您可以有效地将TextInput中显示的内容减少为条子(即使如此)。为了弥补这一点,您还需要调整height
  2. 当您调整height时,您可能会遇到this double height issue。我不知道这是否已经修复,但如果你仍然看到问题,请看看它。
  3. 最后,paddingHorizontal: 150将它推得太远而没有任何东西出现。将其减少到像paddingHorizontal: 15那样小得多的东西。