Android TabLayout с активной вкладкой всегда в центре, как в приложении Play Newsstand

В android.support.design.widget.TabLayoutКак сделать так, чтобы активная вкладка всегда отображалась в центре, как в приложении Play Newsstand, как показано ниже.

Первая и последняя вкладка также должны появиться в центре.

Play Газетный киоск

Play Газетный киоск

Я попытался использовать 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, вам нужно расширить этот класс и установить отступ вручную.

Другие вопросы по тегам