Гравитация выбранной вкладки TabLayout

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

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

Библиотека поддержки дизайна Android версии 22.2.0.


person Dima Kornilov    schedule 09.07.2015    source источник
comment
Что вы имели в виду насчет кейлайна?   -  person Lennon Spirlandelli    schedule 13.07.2015
comment
«Ключевая линия» — это термин, используемый в google.com/design/spec/components/. tabs.html, в библиотеке поддержки дизайна Android он объявляется через app:tabContentStart.   -  person Dima Kornilov    schedule 13.07.2015


Ответы (2)


К сожалению, метод 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;
}

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

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

person GPack    schedule 17.07.2015

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

person Lennon Spirlandelli    schedule 13.07.2015