解决本机样式问题

时间:2019-12-21 18:42:58

标签: react-native styling react-native-stylesheet

在嵌套视图中的React Native中,样式存在问题。

所需结果: enter image description here

我的设计: enter image description here

如您所见,我在水平分配文本时遇到了问题

代码:

let width = Dimensions.get('window').width - 42;

const styles = StyleSheet.create({
  cardBorder: {
    marginTop: 25,
    marginLeft: 20,
    marginRight: 20,
    borderColor: "grey",
    borderWidth: 1,
    borderRadius: 5,
    overflow: 'hidden',
  },
  titleText: {
    ...FONT_SEMI_BOLD,
    marginTop: 10,
    marginLeft: 10,
    fontSize: 17,
    flex: 1,
  },
  priceText: {
    ...FONT_SEMI_BOLD,
    marginTop: 10,
    marginLeft: 10,
    marginRight: 10,
    fontSize: 17,
    alignSelf: 'flex-end',
    flex: 1,
  },
});

export default class CardDetailScreen extends Component {
  render() {
    return (
      <SafeAreaView>
        <HeaderReturn />
        <View style={styles.cardBorder}>
          <Image
            style={{ height: width, width: width }}
            source={{ uri: testData[0].uri }}
          />
          <View
            style={{
              flexDirection: 'row',
              justifyContent: "space-between",
            }}
          >
            <Text style={styles.titleText}>{testData[0].name}</Text>
            <Text style={styles.priceText}>{testData[0].price}</Text>
          </View>
        </View>
      </SafeAreaView>
    );
  }
}

任何帮助都值得赞赏,它看起来非常简单,但我无法使其正常工作。谢谢!

2 个答案:

答案 0 :(得分:1)

似乎您想在视图的左侧显示名称,在价格的右侧显示价格。所以你可以这样尝试

priceText: {
    ...FONT_SEMI_BOLD,
    marginTop: 10,
    marginLeft: 'auto',
    marginRight: 10,
    fontSize: 17,
},

只需提及您的marginLeft: 'auto'。还要从父视图的样式中删除justifyContent: "space-between",

答案 1 :(得分:0)

尝试将styles.cardBorder设置为具有alignItems: 'center''width': '100%'。我认为您的文字会以其容器中的文字居中,但容器的宽度没有全部显示。也许您只需要'width': '100%'