使用flex使自动完成列表覆盖在其他元素上

时间:2018-07-08 19:21:53

标签: css css3 react-native autocomplete flexbox

我正在使用平面列表制作自动填充文本框。 我想在我拥有的每个元素之上显示一个列表。 现在,当自动完成显示。它将另一个文本框推开。

2个自动完成文本框:

enter image description here

当文本框显示列表时,他们将另一个文本框推开:

enter image description here

1 个答案:

答案 0 :(得分:0)

这应该做到:

    <TextInput placeholder="search" onChangeText={(text) => this.populateList(text)} />
    <View>
      <FlatList
        style={{ position: 'absolute' }}
        data={this.state.data}
        renderItem={({ item }) => <Text>{item.key}</Text>}
      />
    </View>
    <TextInput placeholder="search" />

这是我用来测试的组件:

import React, { Component } from 'react';
import {
  StyleSheet,
  Text,
  View,
  FlatList,
  TextInput
} from 'react-native';

export default class App extends Component {
  constructor(props) {
    super(props);
    this.state = {
      data: []
    };
  }

  populateList = (text) => {
    var characters = text.split("");
    var data = [];
    characters.forEach(element => {
      data.push({ key: element });
    });
    console.log(data);
    this.setState({ data });
  }

  render() {
    return (
      <View style={styles.container}>
        <TextInput placeholder="search" onChangeText={(text) => this.populateList(text)} />
        <View>
          <FlatList
            style={{ position: 'absolute' }}
            data={this.state.data}
            renderItem={({ item }) => <Text>{item.key}</Text>}
          />
        </View>
        <TextInput placeholder="search" />
      </View>
    );
  }
}

const styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  }
});