自社でも使っているツールのReact Native製のアプリを使っている同僚から、Androidを上げたらスクロールがおかしいよという連絡があったので調査をしました。
問題が起こるのは、逆方向のリストを表示している箇所です。逆方向のリストとは画面一番したが要素の先頭で、上にスクロールしていくと追加読み込みが起こるという、チャットのような画面のことです。
元々これを実現するためにListView
をベースにして逆向きリストを実現できるこちらのライブラリを使っていました。
最初の調査の段階ではもしかしてこれが古いせいなのかな?と疑いました。
ところで、1年ちょい前ぐらいからReact NativeにはFlatList
という新しいコンポーネントが用意されており、ListView
よりもFlatList
を使うほうが良いです。FlatList
にはリストを逆向きにするためのinverted
というプロパティも用意されているため逆向きリストも簡単に実現できます。
ということを知っていたのでライブラリを使わずにFlatList
に変更すれば直るかも、なんて簡単に考えていました。
結果、FlatList
への置き換えは簡単に済んだのですが、スクロールの挙動は全く直りませんでした。inverted
オプションを無くすと(=上から下に要素が並ぶようにすると)、スクロールの問題がありませんでしたので、何かのバグかな?と思い、React Nativeのissueにあたることにしました。
早速こんなんが見つかりまして、
どうやら今回と同じ問題について話しているようだぞ、というのがわかりました。ネイティブ側の実装をいじって回避できるという話もあるようですが、定かではないしあまりやりたくない感じだなーというところまでわかりました。
Android側の実装が変わったのに対してReact Native側が対応しきれていないという風に見えるので、ちょっと対応待ちかなと思います。