您的 ListView 不向下移动的关键是将叠加层的定位设置为absolute。通过这样做,您可以手动设置视图的位置和宽度/高度,它不再遵循 flexbox 布局。查看以下简短示例。叠加层的高度固定为 360,但您可以轻松地为其设置动画或使其动态化。
'use strict';
var React = require('react-native');
var Dimensions = require('Dimensions');
// We can use this to make the overlay fill the entire width
var { width, height } = Dimensions.get('window');
var {
  AppRegistry,
  StyleSheet,
  Text,
  View,
} = React;
var SampleApp = React.createClass({
  render: function() {
    return (
      <View style={styles.container}>
        <Text style={styles.welcome}>
          Welcome to the React Native Playground!
        </Text>
        <View style={[styles.overlay, { height: 360}]} />
      </View>
    );
  }
});
var styles = StyleSheet.create({
  container: {
    flex: 1,
    justifyContent: 'center',
    alignItems: 'center',
    backgroundColor: '#F5FCFF',
  },
  welcome: {
    fontSize: 20,
    textAlign: 'center',
    margin: 10,
  },
  // Flex to fill, position absolute, 
  // Fixed left/top, and the width set to the window width
  overlay: {
    flex: 1,
    position: 'absolute',
    left: 0,
    top: 0,
    opacity: 0.5,
    backgroundColor: 'black',
    width: width
  }  
});
AppRegistry.registerComponent('SampleApp', () => SampleApp);
module.exports = SampleApp;