現象
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 の開閉のたびにスクロール位置が変わってしまって気持ちわるかった