Можно ли закрепить индикатор выбора вкладки TabLayout в верхней части экрана во время прокрутки?

Я изучаю способ закрепить индикатор табуляции TabLayout в CoordinatorLayout при прокрутке вниз.

Если я добавлю флаг scroll|enterAlwaysCollapsed к TabLayout, то сама вкладка исчезнет при прокрутке вниз. Я хочу, чтобы панель индикатора вкладок была закреплена в верхней части экрана.

Есть ли способ реализовать это?

введите здесь описание изображения


comment
Установите minHeight CollapsingToolbarLayout на высоту индикатора (например, 4dp) и убедитесь, что exitUntilCollapsed находится в его свойстве layout_scrollFlags.   -  person Mehrzad Chehraz    schedule 11.01.2017


Ответы (2)


Я думаю, у вас вообще не должно быть никаких флагов. Ваш макет должен быть примерно таким:

<CoordinatorLayout>
    <AppBarLayout>

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

    </AppBarLayout>

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

Если вы назначите флаг scroll для TabLayout, он начнет реагировать на жесты прокрутки и будет перемещаться/входить/выходить в соответствии с вашими флагами. Насколько я понимаю по вашему вопросу, вы не хотите его перемещать, поэтому просто снимите флажки.

См. здесь для справки.

person natario    schedule 27.06.2015
comment
Я хочу, чтобы вкладка перемещалась, кроме индикаторной полосы в нижней части вкладки. - person bestofbest1; 27.06.2015

Вы должны указать свой собственный Behavior для вашего TabLayout или AppBarLayout (только если TabLayout является только дочерним элементом AppBarLayout), где вы будете переводить y из TabLayout в -mTabLayout.getHeight() + mTabIndicatorHeight. Вы должны сделать то же самое, если вы идете со смещением верха и низа.

В настоящее время TabLayout не имеет @DefaultBehavior и транслируется поведением AppBarLayout. Что представляет собой простое верхнее и нижнее смещение к общему диапазону прокрутки (сумма высот представлений с флагами прокрутки).

person Nikola Despotoski    schedule 27.06.2015
comment
Спасибо за Ваш ответ. Но я не могу понять это идеально. Извиняюсь. Не могли бы вы дать мне больше подсказок? - person bestofbest1; 28.06.2015