1

I am investigating the way to pin the tab indicator of TabLayout in CoordinatorLayout while scrolling down.

If I add scroll|enterAlwaysCollapsed flag to the TabLayout, then the tablayout itself is dissappeared while scrolling down. I want tab indicator bar be pinned to the top of the screen.

Is there a way to implement this?

enter image description here

freshcode
  • 36
  • 5
  • Set minHeight of the CollapsingToolbarLayout to height of the indicator (4dp for example) and make sure exitUntilCollapsed is in its layout_scrollFlags property. – Mehrzad Chehraz Jan 10 '17 at 23:34

2 Answers2

0

I think you should just have no flags at all. Your layout should be something like:

<CoordinatorLayout>
    <AppBarLayout>

        <Toolbar app:layout_scrollFlags="scroll|enterAlways" />
        <TabLayout/>

    </AppBarLayout>

    < /> <!-- ViewPager or other stuff -->
</CoordinatorLayout>

If you assign the scroll flag to the TabLayout it will start reacting to scroll gestures and will move/enter/exit according to your flags. As far as I understand about your question, you don't want it to move, so just remove the flags.

See here for reference.

natario
  • 24,954
  • 17
  • 88
  • 158
0

You should provide your custom Behavior for your TabLayout or AppBarLayout (only if TabLayout is only child of the AppBarLayout), where you will translate the y of the TabLayout to the -mTabLayout.getHeight() + mTabIndicatorHeight. You should do the same if you go with offseting top and bottom.

Currently, TabLayout does not have @DefaultBehavior and it is translated by the AppBarLayout behavior. Which is plain top and bottom offseting to the total amount of scroll range (sum of heights of views that have scrolling flags).

Nikola Despotoski
  • 49,966
  • 15
  • 119
  • 148