LoginSignup
14

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-09-19

現象

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

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14