底部中心的居中按钮

时间:2019-02-24 08:34:20

标签: css reactjs react-native

我试图将下一个按钮居中在页面底部。而不是位于页面底部,而是停留在页面中间。有帮助吗?

屏幕截图: Screen Shot

export default class Type extends Component {
    constructor(props) {
        super(props)

        this.state = {
            selected: 'user'
        }
    }

    _select(selected) {
        this.setState({ selected })
    }

    _renderButton(type, photo, width, height, buttonStyles) {
        const { selected } = this.state

        if (selected === type)
            return (
                <TouchableOpacity style={ styles.buttonSelected } onPress={ e => this._select(type) }>
                    <Image source={ photo } style={[ styles.buttonPhoto, buttonStyles ]} width={ width } height={ height } />
                </TouchableOpacity>
            )

        return (
            <TouchableOpacity style={ styles.button } onPress={ e => this._select(type) }>
                <Image source={ photo } style={[ styles.buttonPhoto, buttonStyles ]} width={ width } height={ height } />
            </TouchableOpacity>
        )
    }

    _renderText(text, type, textStyles) {
        const { selected } = this.state

        if (selected === type)
            return <Text style={[ styles.text, styles.textSelected, textStyles ]}>{ text }</Text>

        return <Text style={[ styles.text, textStyles ]}>{ text }</Text>
    }

    render() {

        return (
            <ScrollView style={ styles.container }>
                <Text style={ styles.question }>Who are you?</Text>
                <View style={ styles.buttons }>
                    { this._renderButton('user', boy, 64, 64, { top: 15, left: 20 }) }
                    { this._renderButton('carnival', ticket, 72, 72, { top: 10, left: 15 })}
                </View>
                <View style={ styles.texts }>
                    { this._renderText('Attendee', 'user', { left: -12 }) }
                    { this._renderText('Carnival', 'carnival', { left: 8 }) }
                </View>

                <TouchableOpacity style={ styles.nextButton }>
                    <Text style={ styles.nextText }>
                        Next Step
                    </Text>
                </TouchableOpacity>
            </ScrollView>
        )
    }
}

const styles = StyleSheet.create({
  container: {
    flex: 1
  },
  question: {
    paddingTop: '30%',
    textAlign: 'center',
    color: '#ccc',
    fontSize: 24,
    marginBottom: 30
  },
  buttons: {
    flex: 1,
    flexDirection: 'row',
    justifyContent: 'center'
  },
  button: {
    width: width/3,
    height: width/3,
    borderRadius: (width/3)/2,
    borderWidth: 1,
    borderColor: '#e6e6e6',
    marginLeft: 10,
    marginRight: 10
  },
  buttonPhoto: {
    position: 'relative'
  },
  buttonSelected: {
    width: width/3,
    height: width/3,
    borderRadius: (width/3)/2,
    borderWidth: 1,
    borderColor: '#ff9972',
    marginLeft: 10,
    marginRight: 10
  },
  texts: {
    flex: 1,
    flexDirection: 'row',
    justifyContent: 'center',
    paddingTop: 12
  },
  text: {
    width: width/3,
    color: '#b5b5b5',
    textAlign: 'center',
  },
  textSelected: {
    color: '#ff9972'
  },
  nextButton: {
    position: 'absolute',
    left: (width/1.5)/2,
    bottom: 5,
    paddingTop: 10,
    backgroundColor: '#ff6b5d',
    width: width/1.5,
    height: 48,
    borderRadius: 5,
    borderBottomWidth: 2,
    borderBottomColor: '#de5244',
  },
  nextText: {
    fontSize: 16,
    color: '#fff',
    textAlign: 'center'
  }
})

这已经给我几个小时了。寻找专业开发人员使用的简单解决方案。

忽略: 看起来您的帖子大部分是代码;请添加更多详细信息。 看起来您的帖子大部分是代码;请添加更多详细信息。 看起来您的帖子大部分是代码;请添加更多详细信息。 看起来您的帖子大部分是代码;请添加更多详细信息。

1 个答案:

答案 0 :(得分:0)

您可以在<ScrollView>内使用<ScrollView>来代替<View>作为父对象。

<View>
<ScrollView style={{flex:1}}>
{/*All of your screen */}
</ScrollView>
<View>
<TouchableOpacity style={ styles.nextButton }>
                    <Text style={ styles.nextText }>
                        Next Step
                    </Text>
</TouchableOpacity>
</View>
</View>

该按钮将始终位于页面底部。