Подтвердить что ты не робот

Выбранная вкладка TabLayout

TabLayout настроен с помощью ViewPager, имеет множество вкладок, MODE_SCROLLABLE и ключевую строку app:tabContentStart="72dp".

Когда пользователь выбирает вкладку, TabLayout пытается прокрутить выбранную вкладку до центра. Я хотел бы, чтобы выбранная вкладка оставалась выровненной по ключевой линии, а не по центру. Возможно ли это?

Библиотека поддержки дизайна Android v22.2.0.

4b9b3361

Ответ 1

К сожалению, метод calculateScrollXForTab() TabLayout является закрытым и не заменяется подклассами. В любом случае вы можете скопировать источник TabLayout в свой проект, а затем, возможно, расширить его с помощью своего класса и изменить метод calculateScrollXForTab() следующим образом:

private int calculateScrollXForTab(int position, float positionOffset) {
   if (mMode == MODE_SCROLLABLE) {
      View final selectedChild = mTabStrip.getChildAt(position);
      // LoG.i ("scrollTo" String.valueOf ((int) selectedChild.getLeft()));
      return (int) selectedChild.getLeft();
   }
   return 0;
}

Это возвращает значение предела, расположенного слева от выбранной вкладки, а затем прокрутка принудительно переходит к этому значению. Крайние правые вкладки останутся фиксированными в позиции, если они выбраны, потому что свиток зажимает прокрутку до границ ребенка.

Я пробовал, и он работает, хотя мне пришлось решить две проблемы с одним соавтором, не найденным в android.support.v7.internal.widget и методе setupWithViewPager(), который не существует в источнике, доступном мне (я думаю вопрос версии)

Ответ 2

Если я хорошо понял ваш вопрос, вы можете вычесть первую позицию табуляции из выбранной позиции табуляции. Затем вы просто устанавливаете другое как позицию для этой выбранной вкладки.