图标导致视图中的间隙 - React Native

时间:2018-03-18 13:08:30

标签: javascript reactjs react-native vector-icons

我有一个看起来像这样的ListView:

screenshot

如您所见,下拉箭头图标在文本第一位正上方的每个项目的左侧创建一个间隙。我想避免这个差距,目前的代码:

<Item key={i+tk}>
                <TouchableOpacity onPress={() => this.setState({prevIndex: this.state.activeIndex, activeIndex: i+tk,
                    messageJustClosed:  (this.state.prevIndex === i+tk  && !this.state.messageJustClosed)})} style={{flex: 1}}>
                <View>
                    <Icon  name= {this.getIconImage(i+tk)} size={30} color="black" style={{alignSelf: 'flex-end'}}/>

                    <Text style = {styles.text}>{messageType[i].title}</Text>
                  <Text style = {styles.dateText}>{new Date(messageType[i].created).toString().substring(0,21)}</Text>
                  <Expand value={ ((this.state.activeIndex === i+tk) && !(this.state.prevIndex === i+tk) ) || ((this.state.activeIndex === i+tk && this.state.messageJustClosed)) }>
                    <Text style = {{color: 'black'}}>{messageType[i].message}</Text>
                  </Expand>
                </View>

                </TouchableOpacity>
            </Item>

我尝试将其与标签内联放置:

<Text style = {styles.text}>{messageType[i].title} <Icon  name= {this.getIconImage(i+tk)} size={30} color="black" style={{alignSelf: 'flex-end'}}/> </Text>

这摆脱了差距,但没有把它放在同一个地方(屏幕右侧)。我尝试给Text标签一个1的flex,但这完全搞砸了,有没有办法可以让Icon与文本内联,一直到右边?

1 个答案:

答案 0 :(得分:1)

包含图标和单元格内容的<View>正在使用默认flexDirection: column呈现,因此如果您更改为flexDirection: row,则可以完成您之后的操作。

以下是如何撰写JSX的示例:

<View style={{ flexDirection: "row" }}>
        <View style={{ flex: 1 }}>
          <Text style={styles.text}>{messageType[i].title}</Text>
          <Text style={styles.dateText}>{new Date(messageType[i].created).toString().substring(0, 21)}</Text>
          <Expand
            value={
              (this.state.activeIndex === i + tk && !(this.state.prevIndex === i + tk)) ||
              (this.state.activeIndex === i + tk && this.state.messageJustClosed)
            }
          >
            <Text style={{ color: "black" }}>{messageType[i].message}</Text>
          </Expand>
        </View>
        <Icon name={this.getIconImage(i + tk)} size={30} color="black" />
      </View>