react-native中图像下方的中心文本

IT技术 javascript reactjs react-native
2021-05-14 01:51:17

我试图在图像下方居中编辑文本。这是我正在使用的应用程序的个人资料页面的开始,因此我希望“编辑”按钮文本位于图像下方居中。

这是代码:

import React from 'react';
import { AppRegistry, StyleSheet, Text, View, Image, TextInput, TouchableHighlight, Alert, Button } from 'react-native';
import { Constants, ImagePicker } from 'expo';

const util = require('util');

export default class TopProfile extends React.Component{
    state = {
    image: 'https://www.sparklabs.com/forum/styles/comboot/theme/images/default_avatar.jpg',
  };

  render() {
    let { image } = this.state;

    return (
        <View style={styles.container}>
            <View style={styles.column}>
              <TouchableHighlight onPress={this._pickImage}>
              {image &&
                <Image source={{ uri: image }} style={{ width: 100, height: 100, borderRadius: 50}} />}
                </TouchableHighlight>
                <Button
                    style={styles.button}
                title="Edit"
                onPress={this._pickImage}
              />
            </View>
          </View>
    );
  }

  _pickImage = async () => {
    let result = await ImagePicker.launchImageLibraryAsync({
      allowsEditing: true,
      aspect: [4, 3],
    });

    console.log(result);

    if (!result.cancelled) {
      this.setState({ image: result.uri });
    }
  };
}

const styles = StyleSheet.create({
  container: {
    flex: 1, 
    flexDirection: 'row'
  },
  column:{
    flex: 1,
    flexDirection: 'column',
    alignItems: 'flex-start',
    paddingLeft: 10,

  },
  button: {
  }

});

module.exports = TopProfile;

这就是我目前得到的:

在此处输入图片说明

有谁知道我该如何解决这个问题?

2个回答

您的列样式props中存在错误。

你已经定义了alignItems: 'flex-start'. flexDirection: 'column'alignItems 属性影响视图的 X 轴时,例如视图中的项目如何水平定位。将它们的对齐设置为 flex-start 不是您想要的。

将您的样式更改为:

column:{
    flex: 1,
    flexDirection: 'column',
    alignItems: 'center',       //THIS LINE HAS CHANGED
    paddingLeft: 10,
},

要么你指定 with<View style={[styles.column, {width:100, justifyContent:'center'}]}要么你把你的<TouchableHighlight>and包裹<Button>在另一个里面<View>