Well, I'm trying to make a top bar like the one that is on Youtube's app. It works on almost all cases but when I use the ScrollListener from RecyclerView I get a problem.
As you can see the View doesn't change its position at certain moment when scrolled.
Here is my code:
rvTop.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView, dx, dy);
            LinearLayoutManager layoutManager = (LinearLayoutManager) layoutManagerTop;
            if(filterTopAdapter.lastSelected >= layoutManager.findFirstVisibleItemPosition() && filterTopAdapter.lastSelected <= layoutManager.findLastVisibleItemPosition()) {
                selectionLine.setVisibility(View.VISIBLE);
                final View view = rvTop.findViewHolderForAdapterPosition(filterTopAdapter.lastSelected).itemView;
                selectionLine.setTranslationX(view.getLeft() - rvTop.getScrollX());
                Log.d("Scroll", String.valueOf(view.getLeft() - rvTop.getScrollX()));
            }
            else {
                selectionLine.setVisibility(View.GONE);
            }
        }
        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
            LinearLayoutManager layoutManager = (LinearLayoutManager) layoutManagerTop;
            if(filterTopAdapter.lastSelected >= layoutManager.findFirstVisibleItemPosition() && filterTopAdapter.lastSelected <= layoutManager.findLastVisibleItemPosition()) {
                selectionLine.setVisibility(View.VISIBLE);
                final View view = rvTop.findViewHolderForAdapterPosition(filterTopAdapter.lastSelected).itemView;
                selectionLine.setTranslationX(view.getLeft() - rvTop.getScrollX());
                Log.d("Scroll", String.valueOf(view.getLeft() - rvTop.getScrollX()));
            }
            else {
                selectionLine.setVisibility(View.GONE);
            }
        }
    });
				
                        
You should try
TabLayoutwithViewPager