ogaclejapan / SmartTabLayout

A custom ViewPager title strip which gives continuous feedback to the user when scrolling
Apache License 2.0
7.09k stars 1.34k forks source link

stl_indicatorAlwaysInCenter="true" do not work #222

Open hyvenzhu opened 7 years ago

hyvenzhu commented 7 years ago

@Override protected void onCreate(Bundle savedInstanceState) { ...

tab.postDelayed(new Runnable() {
  @Override
  public void run() {
    ViewPager viewPager = (ViewPager) findViewById(R.id.viewpager);
    SmartTabLayout viewPagerTab = (SmartTabLayout) findViewById(R.id.viewpagertab);
    demo.setup(viewPagerTab);

    FragmentPagerItems pages = new FragmentPagerItems(this);
    for (int titleResId : demo.tabs()) {
      pages.add(FragmentPagerItem.of(getString(titleResId), DemoFragment.class));
    }

    FragmentPagerItemAdapter adapter = new FragmentPagerItemAdapter(
            getSupportFragmentManager(), pages);

    viewPager.setAdapter(adapter);
    viewPagerTab.setViewPager(viewPager);
  }
}, 3000);

}

while i do it like this, indicator is not in center.

wandersage commented 6 years ago

stl_indicatorAlwaysInCenter doesn't work when you try to set data for tabs after some delay, for example, after some background task. This happens because onSizeChanged() in SmartTabLayout doesn't call again. You should invoke it directly with calling resize.

        ViewGroup.LayoutParams params =  tabs.getLayoutParams();
                    tabs.setLayoutParams(params);

call setLayoutParams for invoke onMeasure and onSizeChanged. this worked for me.

meikaiss commented 5 years ago

You may be want stl_titleOffset= 'auto_center'.