public void notifyDataSetChanged() {

    tabsContainer.removeAllViews();

    tabCount = pager.getAdapter().getCount();

    for (int i = 0; i < tabCount; i++) {

      if (pager.getAdapter() instanceof IconTabProvider) {
        addIconTab(i, ((IconTabProvider) pager.getAdapter()).getPageIconResId(i));
      } else {
        //                addTextTab(i, pager.getAdapter().getPageTitle(i).toString());
        addCustomTab(i, pager.getAdapter().getPageTitle(i).toString());
      }
    }

    updateTabStyles();

    getViewTreeObserver()
        .addOnGlobalLayoutListener(
            new OnGlobalLayoutListener() {

              @SuppressWarnings("deprecation")
              @SuppressLint("NewApi")
              @Override
              public void onGlobalLayout() {

                if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN) {
                  getViewTreeObserver().removeGlobalOnLayoutListener(this);
                } else {
                  getViewTreeObserver().removeOnGlobalLayoutListener(this);
                }

                currentPosition = pager.getCurrentItem();
                scrollToChild(currentPosition, 0);
              }
            });
  }
 public void setTabPaddingLeftRight(int paddingPx) {
   this.tabPadding = paddingPx;
   updateTabStyles();
 }
 public void setTypeface(Typeface typeface, int style) {
   this.tabTypeface = typeface;
   this.tabTypefaceStyle = style;
   updateTabStyles();
 }
 public void setTextColorResource(int resId) {
   this.tabTextColor = getResources().getColor(resId);
   updateTabStyles();
 }
 public void setTextColor(int textColor) {
   this.tabTextColor = textColor;
   updateTabStyles();
 }
 public void setTextSize(int textSizePx) {
   this.tabTextSize = textSizePx;
   updateTabStyles();
 }
 // set Tab Gravity and call updateTabStyles() to refresh view
 public void setTabGravity(int tabGravity) {
   this.tabGravity = tabGravity;
   updateTabStyles();
 }