2016-08-16 45 views
1

レスポンスネイティブのListViewの最初のスクロール位置を設定しようとしています。ReactネイティブListViewの初期スクロール位置を設定する

今、私はこれをやっている:images小道具は、ListViewコントロールのデータソースです

componentDidMount() { 
    let i = this.props.images.indexOf(this.props.current); 
    if(i != -1) { 
    this.refs.listView.scrollTo({ x:i*this.props.width, y:0, animated:false }); 
    } 
} 

、私が最初にスクロールする場所current小道具であり、width小道具がありますコンポーネントの幅。 (コンポーネントが水平方向にスクロールします)。

これはうまくいきますが、最初のレンダリングとcomponentDidMountへの呼び出しの間に遅延があり、リストがスクロールされる前にリストの最後の点滅が表示されます。

リストの最初のスクロール位置を設定する方法はありますか?そのフラッシュを取り除くためにこれをやるより良い方法は?

+0

iOSでは、「contentOffset」プロパティを使用できます。https://facebook.github.io/react-native/docs/scrollview.html#contentoffset - 最適なxプラットフォームの方法がわからない – jevakallio

+0

ありがとう!私はそれを見ませんでした。私は、基本的なscrollviewのプロパティを調べることを忘れていたと思う。答えとしてそれを置いて、私はそれをチェックします。 – nicholas

答えて

2

iOSでは、ScrollView#contentOffsetを使用して、ScrollViewのプロパティを継承するListViewの最初のスクロール位置を設定できます。

あなたがAndroidソリューションを探している場合は、あなたが呼んでいるListView.scrollToメソッドが、一般的な場合の最良のベットのようです。

あなたがコードサンプルを正しく解釈すると、おそらくpagingEnabledプロパティの助けを借りて、ページ区切りの水平リストにListViewを使用していますか?この場合、AndroidではViewPagerAndroidを代わりに使用し、initialPageプロパティを設定します。

関連する問題