Как настроить индикатор выбранной вкладки в TabLayout?

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

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

У Вас есть какие-то предложения? Я вижу два возможных подхода:

  1. найти способ настроить класс TabLayout, чтобы заменить «квадратную форму» пользовательским значком.
  2. найти способ координировать сенсорные жесты пользователя на ViewPager с движениями пользовательского представления (например, моего значка).

person Gian Segato    schedule 20.12.2015    source источник
comment
Это именно то, что мне тоже нужно   -  person Amit Trivedi    schedule 20.04.2016


Ответы (1)


Одно из решений, которое я могу придумать на данный момент, заключается в том, что вам нужно будет создать файл макета пользовательского представления, который представляет желаемую «выбранную вкладку», и аннотировать android:tabStripEnabled="false" к вашему TabLayout в файле XML.

После этого вам нужно будет зарегистрировать слушателя в экземпляре tablayout и проверить, какой индекс выбирается, и с заданным индексом вызвать TabLayout.getTabAt(i).setCustomView(yourSelectedCustomView).

Посмотрите здесь, как создать собственное представление для TabLayout: https://stackoverflow.com/a/48258731/4974461

person atjua    schedule 22.11.2018
comment
будет ли это также поддерживать анимацию скользящего движения индикатора? - person Angelina; 17.05.2019