Android TabLayout с активной вкладкой всегда в центре, как в приложении Play Newsstand
В android.support.design.widget.TabLayout
Как сделать так, чтобы активная вкладка всегда отображалась в центре, как в приложении Play Newsstand, как показано ниже.
Первая и последняя вкладка также должны появиться в центре.
Я попытался использовать padding для TabLayout. Это не работает. Это код, который я написал:
<android.support.design.widget.TabLayout
android:id="@+id/tabs"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:tabIndicatorColor="@color/yellow"
app:tabSelectedTextColor="@android:color/white"
app:tabTextColor="#EEE"
app:tabMode="scrollable"
android:gravity="bottom"
android:clipToPadding="false"
android:paddingLeft="90dp"
android:paddingRight="90dp"
/>
В этом случае tabIndicator также сместится на 90dp слева. Он должен оставаться в центре независимо от заполнения.
2 ответа
Может быть, немного поздно, но вы можете попробовать использовать эту библиотеку:
https://github.com/jpardogo/PagerSlidingTabStrip
Это можно сделать так, как они сказали:
Включите следующую зависимость в ваш файл build.gradle.
compile 'com.jpardogo.materialtabstrip:library:1.1.1'
Или добавьте библиотеку как проект. Я пытался отправить запрос на извлечение, но похоже, что первоначальный разработчик его больше не поддерживает.
Включите виджет PagerSlidingTabStrip в свой макет. Это обычно должно быть помещено выше ViewPager, который это представляет.
<com.astuetz.PagerSlidingTabStrip
android:id="@+id/tabs"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary" />
В вашем методе onCreate (или onCreateView для фрагмента) свяжите виджет с ViewPager:
// Initialize the ViewPager and set an adapter
ViewPager pager = (ViewPager) findViewById(R.id.pager);
pager.setAdapter(new TestAdapter(getSupportFragmentManager()));
// Bind the tabs to the ViewPager
PagerSlidingTabStrip tabs = (PagerSlidingTabStrip) findViewById(R.id.tabs);
tabs.setViewPager(pager);
Надеюсь, это поможет.
Оформить заказ этого решения: /questions/24577140/tsentr-android-vyirovnyat-vyibrannuyu-vkladku-v-tablayout/24577165#24577165
Может быть решен с помощью tabContentStart, но если вы хотите центрировать обе стороны Tablayout, вам нужно расширить этот класс и установить отступ вручную.