findLastCompletelyVisibleItemPosition()
RecyclerView で最後に表示されるアイテムを特定するために使用しています。
レイアウトの設定方法のコード スニペットを次に示します。
mRecyclerView.setHasFixedSize(true);
LinearLayoutManager mLayoutManager = new LinearLayoutManager(getContext());
mRecyclerView.setLayoutManager(mLayoutManager);
レイアウト XML:
<android.support.v4.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/swipe_container"
android:layout_width="match_parent"
android:layout_height="match_parent">
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/message_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@android:color/white"
android:paddingBottom="@dimen/footer_progress_bar"
android:paddingTop="16dp"
android:scrollbars="vertical" />
<ProgressBar
android:id="@+id/progress_bar"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_gravity="center"
android:visibility="gone" />
<ProgressBar
android:id="@+id/footer_progress_bar"
android:layout_width="@dimen/footer_progress_bar"
android:layout_height="@dimen/footer_progress_bar"
android:layout_gravity="center|bottom"
android:visibility="gone" />
</FrameLayout>
</android.support.v4.widget.SwipeRefreshLayout>
縦向きモードでは、これは正常に機能し、常に正しい位置に戻ります。
ただし、ランドスケープ モードでは、返される位置は常に -1 です。
私の質問は:
なぜこれが起こるのか誰か知っていますか?
これをオーバーライドして正しい位置を返すにはどうすればよいですか?
または、ランドスケープの最後のアイテムの正しい位置を取得するための別のソリューションを誰かが推奨できますか?