Выравнивание вкладок PagerTabStrip влево

Я использую PagerTabStrip для установки скользящих вкладок. Однако, когда я устанавливаю три вкладки, она показывает первую вкладку в центре, чтобы пользователи не могли видеть все три вкладки с первого взгляда.

Как я могу выровнять их влево?

enter image description here

Я хочу переместить вкладки влево, как это.

enter image description here

Я попробовал гравитацию, но не повезло.

pagerTabStrip.setGravity(Gravity.LEFT);

Это код для MainActivity.

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    ViewPager viewPager = (ViewPager) findViewById(R.id.pager);
    PagerTabStrip pagerTabStrip = (PagerTabStrip) findViewById(R.id.pager_tab_strip);

    FragmentPagerAdapter fragmentPagerAdapter = new MyFragmentPagerAdapter(
            getSupportFragmentManager());
    viewPager.setAdapter(fragmentPagerAdapter);

    pagerTabStrip.setGravity(Gravity.LEFT);
}

и

MyFragmentPagerAdapter extends FragmentPagerAdapter {

    private final String[] pageTitle = { "Entry", "History", "Report" };

    public MyFragmentPagerAdapter(FragmentManager fragmentManager) {
        super(fragmentManager);
    }

    @Override
    public Fragment getItem(int position) {

        Fragment fragment = new PageFragment();
        Bundle arguments = new Bundle();
        arguments.putString("pageIndex", Integer.toString(position + 1));
        fragment.setArguments(arguments);
        return fragment;
    }

    @Override
    public int getCount() {
        return pageTitle.length;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        return pageTitle[position];
    }

}

Проблема решена!

Вам нужно загрузить последние коды из github вместо страницы разработчика Google.

SlidingTabLayout.java

SlidingTabStrip

Затем вы можете использовать setDistributeEvenly (true), как это.

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {

    // Get the ViewPager and set it PagerAdapter so that it can display items
    mViewPager = (ViewPager) view.findViewById(R.id.viewpager);

    FragmentManager fragmentManager = getFragmentManager();
    MyFragmentPagerAdapter adapter = new MyFragmentPagerAdapter(fragmentManager);
    mViewPager.setAdapter(adapter);

    // Give the SlidingTabLayout the ViewPager, this must be done AFTER the ViewPager has had
    // it PagerAdapter set.
    mSlidingTabLayout = (SlidingTabLayout) view.findViewById(R.id.sliding_tabs);
    mSlidingTabLayout.setDistributeEvenly(true);
    mSlidingTabLayout.setViewPager(mViewPager);
}

Ответы

Ответ 1

Используйте это перед установкой setViewPager():

sliding_tabs.setDistributeEvenly(true);

Если вы получили эту ошибку Cannot resolve method 'setDistributeEvenly(boolean)', вы должны обновить свой SlidingTabLayout.java и SlidingTabStrip.java из исходного кода ввода-вывода Google:

SlidingTabLayout.java

SlidingTabStrip