如何将视图宽度扩展为react native中的可用空间

时间:2017-08-21 11:27:00

标签: android react-native react-native-android react-native-ios

您好我正在尝试设计反应原生的屏幕。如果你在下面看到截图,那里有三个视图。 a)图像b)出现文本的中心视图c)圆形视图

我想扩展中心视图宽度,因此它涵盖了完整的可用空间。我尝试使用flex属性但无法实现。有谁知道怎么做?

enter image description here

<View style={{ flexDirection: "column" }}>
  <View style={{ flexDirection: "row" }}>
    <Icon name="user" size={30} />
    <Text
      style={{
        textAlignVertical: "center",
        marginLeft: 20
      }}
    >
      Ajay Saini
    </Text>
  </View>
  <Text style={{ marginLeft: 50 }}>Hello</Text>
</View>


<View style={{ flexDirection: "row", width: "100%" }}>
  <Icon name="user" size={30} />
  <View
    style={{
      flex: 1,
      flexDirection: "column",
      marginLeft: 20
    }}
  >
    <Text>Williams</Text>
    <Text>
      {item.text}jhfjks ahfdkjsdh fjkshfjksaddhfjksdahfjkds
      ahajkdhfjksahdf
    </Text>
  </View>
  <View
    style={{
      flex: 1,
      flexDirection: "row",
      justifyContent: "flex-end"
    }}
  >
    <TouchableOpacity
      style={{
        borderWidth: 1,
        borderColor: "rgba(0,0,0,0.2)",
        alignItems: "center",
        justifyContent: "center",
        width: 30,
        height: 30,
        backgroundColor: "#fff",
        borderRadius: 100
      }}
    />
  </View>
</View>

2 个答案:

答案 0 :(得分:2)

由于您的圆形视图有flex: 1,它会尝试占用所有可用空间。此外,中心视图也尝试这样做。这会导致均匀分割可用空间,因此从圆形视图中删除 flex: 1样式就足够了。

此外,您可以尝试向大多数外部视图添加justifyContent: 'space-between'。这是简化更复杂设计的绝佳选择。

<View style={{ flexDirection: 'row' }}>
  <Icon name="user" size={30} />
  <View
    style={{
      flex: 1,
      flexDirection: "column",
      marginLeft: 20
    }}
  >
    <Text>Williams</Text>
    <Text>
      {item.text}jhfjks ahfdkjsdh fjkshfjksaddhfjksdahfjkds
      ahajkdhfjksahdf
    </Text>
  </View>
  <View
    style={{
      flexDirection: "row",
      justifyContent: "flex-end"
    }}
  >
    <TouchableOpacity
      style={{
        borderWidth: 1,
        borderColor: "rgba(0,0,0,0.2)",
        alignItems: "center",
        justifyContent: "center",
        width: 30,
        height: 30,
        backgroundColor: "#fff",
        borderRadius: 100
      }}
    />
  </View>
</View>

答案 1 :(得分:0)

尝试将此部分更改为flex: 2

<View
  style={{
    // flex: 1,
    flex: 2
    flexDirection: "column",
    marginLeft: 20
  }}
>
  <Text>Williams</Text>
  <Text>
    {item.text}jhfjks ahfdkjsdh fjkshfjksaddhfjksdahfjkds 
    ahajkdhfjksahdf
  </Text>
</View>