ViewPagerIndicator – установить вкладку TabPageIndicator в центр

Я делаю расписание для Android, и я использую ViewPagerIndicator как фрагмент. Но теперь у меня проблема, я хочу, чтобы TabPageIndicator был в центре. Как это: пример

И я хотел бы установить индивидуальную ширину и высоту вкладки. И установите эту вкладку на переносимую, которая поддерживает выбранные / нажатые состояния.

Я еще не нашел, чтобы решить эти проблемы. Я попробовал что-то с onPageSelected и ContextThemeWrapper но это не работает. (Возможно, я не использую его правильно).

Возможно ли это сделать, или я должен смотреть на что-то другое, чем ViewPagerIndicator? (Другой вариант без ViewPagerIndicator также приветствуется).

Приложение на изображении является Untis Mobile и может быть найдено на PlayStore. Я уже спрашиваю создателей, как они это делают, но они сказали, что приложение не является открытым исходным кодом. (Но я нашел в источнике, что они делают это с помощью TwoDScrollView , но я не уверен)

Редактировать:

Стиль vpiTabPageIndicatorStyle с помощью vpiTabPageIndicatorStyle . (С помощью разработчиков XDA!)

Когда я добавляю 20 предметов, он остается посередине, но только с пункта 4 до пункта 17, пункты 1, 2, 3, 18, 19, 20 не находятся посередине. Видеть:

Неправильно

Можно ли добавить три пустых элемента (или пустое пространство), чтобы первый и последний элементы были посередине? Что-то вроде этого (из приложения Untis Mobile):

Хорошо

(Я уже пробовал android:paddingLeft в vpiTabPageIndicatorStyle но это не работает)

Я знаю, что viewPager.setCurrentItem(total/2) будет устанавливать TabPageIndicator посередине, но затем он останется посередине, и я не могу выбрать другой день (я называю это onPageScrolled ). Поэтому я хочу, чтобы вы прокручивали выбранный, который должен быть посередине. Это возможно?

Виджет, который вы ищете, похож на горизонтальное колесо android. Существует реализация на android-spinnerwheel, которая может быть тем, что вам нужно.

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

Тогда вам не нужен viewpagerindicator. Используйте горизонтальное представление прокрутки, как предложил Амуля-Харе в вашей деятельности и замените фрагменты при прокрутке.

Ваш макет деятельности может выглядеть так:

 <LinearLayout android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" > <SomeWheelView android:layout_height="wrap_content" android:layout_width="match_parent" /> <SomeStaticIndicatorView android:layout_height="wrap_content" android:layout_width="match_parent" /> <FrameLayout android:layout_height="match_parent" android:layout_width="match_parent" /> </LinearLayout> 

Установите прослушиватель в режим просмотра колесика, и когда произойдут изменения, вы можете поместить свои фрагменты в рамки в своей деятельности.

Используйте его так:

 TabPagerIndicator tbi; ViewPager pager; 

onCreate() делают это так

 tbi=(TabPagerIndicator)findViewById(R.id.something); tbi.setViewPager(pager); 

Надеюсь, это сработает для вас. : D