Listview 列表视图在Chromebook上不滚动

Listview 列表视图在Chromebook上不滚动,listview,react-native,chromebook,Listview,React Native,Chromebook,目前正在Chromebook上进行react原生项目,我的一些ListView拒绝滚动。这个问题很奇怪,因为它们在常规的android设备、iOS设备甚至我的应用程序的其他部分都可以正常工作,但是在两个特定的情况下它们不会滚动 我尝试了所有的建议,但似乎都不管用。我想知道Chromebook是否有什么不同的地方导致了这种情况 以下是ListView代码的一个片段: render() { const margin = PadletCell.sectMargin(); cons

目前正在Chromebook上进行react原生项目,我的一些ListView拒绝滚动。这个问题很奇怪,因为它们在常规的android设备、iOS设备甚至我的应用程序的其他部分都可以正常工作,但是在两个特定的情况下它们不会滚动

我尝试了所有的建议,但似乎都不管用。我想知道Chromebook是否有什么不同的地方导致了这种情况

以下是ListView代码的一个片段:

render() {
    const margin    = PadletCell.sectMargin();
    const cellStyle = Settings.isTablet() ? styles.tabletContainer : {};
    const listStyle = Settings.isTablet() ? styles.listStyleTablet : styles.listStyleMobile;
    const margins   = Settings.isTablet() ? {marginLeft:margin, marginRight:margin} : {};
    return (
      <View style={[styles.flex, listStyle, margins]} onLayout={this.onLayout.bind(this)}>
        <ListView
          renderFooter={()=><View style={{height:96}}/>}
          style={[styles.listView]}
          enableEmptySections={true}
          removeClippedSubviews={false}
          contentContainerStyle={[cellStyle]}
          dataSource={this.state.dataSource}
          ref={listView => this.listView = listView}
          renderRow={(data,section,row) => <PadletCell navigator={this.props.navigator}
                                             id={{section:section,row:row}}
                                             width={this.state.cellWidth}
                                             user={this.state.user}
                                             backOne={true}
                                             data={data}
                                             />}
         refreshControl={
           <RefreshControl
             refreshing={this.state.refreshing}
              onRefresh={this.onRefresh.bind(this)}
           />}
        />
      </View>
    )
  }

我试过移除flex,硬编码一个高度也没有用。奇怪的是,在我的应用程序的其他部分中,代码是完全相同的。任何帮助都将不胜感激,谢谢

我找到了一个临时解决方案,这是一个轻微的改动,但仍然有效。ScrollView似乎不会滚动,除非它的内容大于可见区域。不管出于什么原因,最初并没有加载所有内容,所以我创建了一个异步重新加载方法,并将其触发大约10次以填充屏幕,因为每次连续重新加载只加载一个额外的单元格

componentDidMount() {
  setTimeout(this.forceReload.bind(this), 500);
}

async forceReload() {
  for (let i=0; i<10; i++) await this.asyncReload();
}

asyncReload() {
  return new Promise((resolve) => {
    this.onRefresh(resolve);
  });
}

onRefresh(callback=()=>{}) {
  const { data } = this.props;
  let ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
  this.setState({ dataSource: ds.cloneWithRows(data) }, callback);
}
componentDidMount(){
setTimeout(this.forceReload.bind(this),500);
}
异步forceReload(){
for(设i=0;i{
此.onRefresh(resolve);
});
}
onRefresh(回调=()=>{}){
const{data}=this.props;
让ds=newListView.DataSource({rowHasChanged:(r1,r2)=>r1!==r2});
this.setState({dataSource:ds.cloneWithRows(data)},回调);
}
componentDidMount() {
  setTimeout(this.forceReload.bind(this), 500);
}

async forceReload() {
  for (let i=0; i<10; i++) await this.asyncReload();
}

asyncReload() {
  return new Promise((resolve) => {
    this.onRefresh(resolve);
  });
}

onRefresh(callback=()=>{}) {
  const { data } = this.props;
  let ds = new ListView.DataSource({rowHasChanged: (r1, r2) => r1 !== r2});
  this.setState({ dataSource: ds.cloneWithRows(data) }, callback);
}