问题再现
最近实现一个需求,就是Tablayout+Recyclerview实现联动效果,于是
tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { Log.e("sujd=======1",tab.getPosition()+""); } @Override public void onTabUnselected(TabLayout.Tab tab) { Log.e("sujd=======3",tab.getPosition()+""); } @Override public void onTabReselected(TabLayout.Tab tab) { Log.e("sujd=======2",tab.getPosition()+""); } });
原因分析
查看源码,是我在联动的时候,add了多次,导致滑动冲突
解决方案
private void initListener(){ tabLayout.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { @Override public void onTabSelected(TabLayout.Tab tab) { manager.scrollToPositionWithOffset(tab.getPosition(),0); } @Override public void onTabUnselected(TabLayout.Tab tab) { } @Override public void onTabReselected(TabLayout.Tab tab) { } }); rv_date.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); tabLayout.setScrollPosition(manager.findFirstVisibleItemPosition(),0,true); } }); }