Edited at

RecyclerView の中に RecyclerView があると画面に表示される時に勝手にスクロールしてしまう場合の対処法

More than 1 year has passed since last update.


現象

RecyclerView(VERTICAL) で作っている画面の中に、RecyclerView(HORIZONTAL) を入れてみたら、画面表示時にスクロール位置がずれてしまう問題が発生


原因

RecyclerView(HORIZONTAL) に focus があたってしまい、そこまでスクロールしてしまっていた


対策

RecyclerView.Adapter を継承したクラスで ViewHolder 内の RecyclerView に setAdapter() したあとに setFocusable(false) を行うことで解消

public class RecyclerViewAdapter extends RecyclerView.Adapter {

@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
ViewHolder vh = new ViewHolder();
RecyclerViewAdapter adapter = ...;
vh.recyclerView.setAdapter(adapter);
vh.recyclerView.setFocusable(false);
return vh;
}
}


その他

DrawerLayout 内でこれをやると、Drawer の開閉のたびにスクロール位置が変わってしまって気持ちわるかった