[Android] ScrollViewにRecyclerViewを入れると勝手にスクロールする

スポンサーリンク

現象

ScrollView内にHORIZONTALなRecyclerViewを入れていると、RecyclerViewの位置まで勝手にスクロールされてしまう。

引っ張って更新とかした場合は発生せず、RecyclerViewの初期化初回だけ発生する。

原因

よくわからないが、AdapterをセットしたタイミングでRecyclerViewにフォーカスが当たってスクロールしちゃう模様。

初回だけ、、、。

対策

Adapterをセット直後にFocusをfalseにしてやる。

これで勝手にスクロールされない。

private fun initAdapter(list: List<Data>) {

    recyclerView.apply {

        layoutManager = LinearLayoutManager(this@HogeActivity, LinearLayoutManager.HORIZONTAL, false)
        adapter = HogeAdapter(list).apply {
            setItemClickListener(object : HogeAdapter.ItemClickListener {

                override fun onItemClick(data: Data) {
                    // 選択処理
                }

                override fun onAddClick() {
                    // 追加処理
                }
            })
        }
        isFocusable = false  // ←これやるとスクロールされなくなる
        adapter?.notifyDataSetChanged()
    }

}

タイトルとURLをコピーしました