2017-06-09 3 views
0

私は、初期レイアウトプロパティを取得するためにonLayout小道具を使用しているListViewを持っています。このListViewもフィルター処理されており、リスト項目は追加時に削除されます。 ListViewのサイズが変更されるたびに新しい高さを取得するにはどうすればよいですか?ListViewのサイズが変更された後にlayout.heightを取得する

onLayoutAction = (event) => { 
    var layout = event.nativeEvent.layout 
    const {height} = layout 
    this.setState({ 
     currentListHeight : height - 61 
    }) 
} 

    renderListView =() => { 
    if (this.noRowData()) { 
     return (
      <AlertMessage title='No Offerings Available' show={this.noRowData()} /> 
    ) 
    } else { 
     // TODO: fix refreash control below 
     return (
      <ListView 
      ref='listView' 
      onLayout={this.onLayoutAction} 
      scrollEventThrottle={16} 
      onScroll={this.onScrollAction} 
      contentContainerStyle={styles.listContent} 
      dataSource={this.state.dataSource} 
      renderRow={this.renderRow} 
      renderHeader={this.renderHeader} 
      renderFooter={this.renderFooter} 
      enableEmptySections 
      pageSize={15} 
      refreshControl={ 
       <RefreshControl 
       refreshing={this.props.isLoading} 
       onRefresh={this.handleOnRefresh} 
       tintColor='#000000' 
       title='Loading...' 
       titleColor='#000000' 
       colors={['#000000', '#000000', '#000000']} 
       progressBackgroundColor='#ffffff' /> 
       } 
      /> 
    ) 
    } 
    } 

答えて

1

onLayout機能は、マウント上とドキュメントごとのすべてのレイアウト変更に呼び出されなければなりません。

https://facebook.github.io/react-native/docs/view.html

私は簡単なテストを行なったし、私のアプリでのListViewにonLayout機能を追加しました。私はリストに項目を追加するたびに呼び出されました。私は項目を削除するテストしなかったが、私はそれが同じだと仮定します。

また、onContentSizeChangeをチェックアウトすることもできます。 ListViewが使用するScrollViewでコンテンツが変更されるたびに発生します

https://facebook.github.io/react-native/docs/scrollview.html#oncontentsizechange

関連する問題