Q&A
実現したいこと
TabLayoutとRecyclerViewの両方がある実装をしていて困りました。
それはRecyclerViewでスクロールをする際に、TabLayoutでのスクロールも行われちゃうことです。
TabLayout自体のスクロールを無効にはしたくなくて、
RecyclerViewをタップしているときだけTabLayoutのスクロールを無効にする方法
なんかがあればいいなと思い、こちらで質問させてもらいます。
該当のソースコード
MainActivity.kt
1class MainActivity : AppCompatActivity() { 2 override fun onCreate(savedInstanceState: Bundle?) { 3 super.onCreate(savedInstanceState) 4 setContentView(R.layout.activity_main) 5 6 val viewPager : ViewPager2 = findViewById(R.id.viewPager) 7 val tabLayout : TabLayout = findViewById(R.id.tablayout) 8 9 val adapter = ViewPagerAdapter(supportFragmentManager, lifecycle) 10 viewPager.adapter = adapter 11 TabLayoutMediator(tabLayout, viewPager) { tab, position -> 12 val relativeLayout = LayoutInflater.from(this) 13 .inflate(R.layout.tab_item, tabLayout, false) as RelativeLayout 14 val tabTextView : TextView = relativeLayout.findViewById(R.id.tab_title) 15 tabTextView.text = adapter.getTabTitle(position) 16 tab.customView = relativeLayout 17 }.attach() 18 } 19}
SampleFragment.kt
1class SampleFragment : Fragment() { 2 override fun onCreateView( 3 inflater: LayoutInflater, 4 container: ViewGroup?, 5 savedInstanceState: Bundle? 6 ): View? { 7 val view = inflater.inflate(R.layout.fragment_sample, container, false) 8 setView(view) 9 return view 10 } 11 12 private fun setView(view: View) { 13 val parent : MainActivity = activity as MainActivity 14 val rv : RecyclerView = view.findViewById(R.id.rv) 15 val adapter = RecyclerAdapterList() 16 rv.layoutManager = GridLayoutManager(parent, 2, RecyclerView.HORIZONTAL,false) 17 rv.adapter = adapter 18 } 19}
試したこと
RecyclerViewのタッチイベントで検索し、クリック処理などの実装を試しましたが、
RecyclerViewのItemのタッチイベントだったり、クリック後は戻せなかったり(当たり前)して、
うまくできませんでした。
よろしくお願いします!
回答1件
あなたの回答
tips
プレビュー
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。