Open mhrlive opened 5 years ago
This one I made with 6 tabs:
SpaceTabLayout.java: ` @SuppressWarnings("unused") public class SpaceTabLayout extends RelativeLayout {
private TabLayout tabLayout;
private Tab tabOne;
private Tab tabTwo;
private Tab tabThree;
private Tab tabFour;
private Tab tabFive;
private Tab tabsix;
private Tab tabseven;
private RelativeLayout parentLayout;
private RelativeLayout selectedTabLayout;
private FloatingActionButton actionButton;
private ImageView backgroundImage;
private ImageView backgroundImage2;
private TextView tabOneTextView;
private TextView tabTwoTextView;
private TextView tabThreeTextView;
private String text_one;
private String text_two;
private String text_three;
private ImageView tabOneImageView;
private ImageView tabTwoImageView;
private ImageView tabThreeImageView;
private ImageView tabFourImageView;
private ImageView tabFiveImageView;
private ImageView tabsixImageView;
private ImageView tabsevenImageView;
private List<Tab> tabs = new ArrayList<>();
private List<Integer> tabSize = new ArrayList<>();
private int numberOfTabs = 3;
private int currentPosition;
private int startingPosition;
private OnClickListener tabOneOnClickListener;
private OnClickListener tabTwoOnClickListener;
private OnClickListener tabThreeOnClickListener;
private OnClickListener tabFourOnClickListener;
private OnClickListener tabFiveOnClickListener;
private OnClickListener tabsixOnClickListener;
private OnClickListener tabsevenOnClickListener;
private Drawable defaultTabOneButtonIcon;
private Drawable defaultTabTwoButtonIcon;
private Drawable defaultTabThreeButtonIcon;
private Drawable defaultTabFourButtonIcon;
private Drawable defaultTabFiveButtonIcon;
private Drawable defaultTabsixButtonIcon;
private Drawable defaultTabsevenButtonIcon;
private int defaultTextColor;
private int defaultButtonColor;
private int defaultTabColor;
private boolean iconOnly = false;
private boolean SCROLL_STATE_DRAGGING = false;
private static final String CURRENT_POSITION_SAVE_STATE = "buttonPosition";
public SpaceTabLayout(Context context) {
super(context);
init();
}
public SpaceTabLayout(Context context, AttributeSet attrs) {
super(context, attrs);
init();
initArrts(attrs);
}
public SpaceTabLayout(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
initArrts(attrs);
init();
}
private void init() {
LayoutInflater.from(getContext()).inflate(R.layout.three_tab_space_layout, this);
parentLayout = (RelativeLayout) findViewById(R.id.tabLayout);
selectedTabLayout = (RelativeLayout) findViewById(R.id.selectedTabLayout);
backgroundImage = (ImageView) findViewById(R.id.backgroundImage);
backgroundImage2 = (ImageView) findViewById(R.id.backgroundImage2);
actionButton = (FloatingActionButton) findViewById(R.id.fab);
tabLayout = (TabLayout) findViewById(R.id.spaceTab);
defaultTabOneButtonIcon = getContext().getResources().getDrawable(R.drawable.wifii);
defaultTabTwoButtonIcon = getContext().getResources().getDrawable(R.drawable.networkk);
defaultTabThreeButtonIcon = getContext().getResources().getDrawable(R.drawable.baseline_search_white_48dp);
defaultTabFourButtonIcon = getContext().getResources().getDrawable(R.drawable.routerr);
defaultTabFiveButtonIcon = getContext().getResources().getDrawable(R.drawable.save);
defaultTabsixButtonIcon = getContext().getResources().getDrawable(R.drawable.key);
defaultTabsevenButtonIcon = getContext().getResources().getDrawable(R.drawable.aboutxml);
defaultTextColor = ContextCompat.getColor(getContext(), android.R.color.primary_text_dark);
defaultButtonColor = ContextCompat.getColor(getContext(), R.color.colorAccent);
defaultTabColor = ContextCompat.getColor(getContext(), R.color.colorPrimary);
}
private void initArrts(AttributeSet attrs) {
TypedArray a = getContext().obtainStyledAttributes(attrs, R.styleable.SpaceTabLayout);
for (int i = 0; i < a.getIndexCount(); ++i) {
int attr = a.getIndex(i);
if (attr == R.styleable.SpaceTabLayout_number_of_tabs) {
numberOfTabs = a.getInt(attr, 3);
if (numberOfTabs == 0) {
numberOfTabs = 3;
iconOnly = true;
}
} else if (attr == R.styleable.SpaceTabLayout_starting_position) {
startingPosition = a.getInt(attr, 0);
int test = startingPosition + 1;
if (test > numberOfTabs) {
switch (numberOfTabs) {
case 3:
startingPosition = 1;
actionButton.setImageDrawable(defaultTabTwoButtonIcon);
actionButton.setOnClickListener(tabTwoOnClickListener);
break;
case 4:
startingPosition = 0;
actionButton.setImageDrawable(defaultTabOneButtonIcon);
actionButton.setOnClickListener(tabOneOnClickListener);
break;
case 5:
startingPosition = 2;
actionButton.setImageDrawable(defaultTabThreeButtonIcon);
actionButton.setOnClickListener(tabThreeOnClickListener);
break;
}
} else {
switch (startingPosition) {
case 0:
actionButton.setImageDrawable(defaultTabOneButtonIcon);
actionButton.setOnClickListener(tabOneOnClickListener);
break;
case 1:
actionButton.setImageDrawable(defaultTabTwoButtonIcon);
actionButton.setOnClickListener(tabTwoOnClickListener);
break;
case 2:
actionButton.setImageDrawable(defaultTabThreeButtonIcon);
actionButton.setOnClickListener(tabThreeOnClickListener);
break;
case 3:
actionButton.setImageDrawable(defaultTabFourButtonIcon);
actionButton.setOnClickListener(tabFourOnClickListener);
break;
case 4:
actionButton.setImageDrawable(defaultTabFiveButtonIcon);
actionButton.setOnClickListener(tabFiveOnClickListener);
break;
case 5:
actionButton.setImageDrawable(defaultTabsixButtonIcon);
actionButton.setOnClickListener(tabsixOnClickListener);
break;
case 6:
actionButton.setImageDrawable(defaultTabsevenButtonIcon);
actionButton.setOnClickListener(tabsevenOnClickListener);
break;
}
}
} else if (attr == R.styleable.SpaceTabLayout_tab_color) {
defaultTabColor = a.getColor(attr, getContext().getResources().getIdentifier("colorAccent", "color", getContext().getPackageName()));
} else if (attr == R.styleable.SpaceTabLayout_button_color) {
defaultButtonColor = a.getColor(attr, getContext().getResources().getIdentifier("colorPrimary", "color", getContext().getPackageName()));
} else if (attr == R.styleable.SpaceTabLayout_text_color) {
defaultTextColor = a.getColor(attr, ContextCompat.getColor(getContext(), android.R.color.primary_text_dark));
} else if (attr == R.styleable.SpaceTabLayout_icon_one) {
defaultTabOneButtonIcon = a.getDrawable(attr);
} else if (attr == R.styleable.SpaceTabLayout_icon_two) {
defaultTabTwoButtonIcon = a.getDrawable(attr);
} else if (attr == R.styleable.SpaceTabLayout_icon_three) {
defaultTabThreeButtonIcon = a.getDrawable(attr);
} else if (attr == R.styleable.SpaceTabLayout_icon_four) {
if (numberOfTabs > 3)
defaultTabFourButtonIcon = a.getDrawable(attr);
} else if (attr == R.styleable.SpaceTabLayout_icon_five) {
if (numberOfTabs > 4)
defaultTabFiveButtonIcon = a.getDrawable(attr);
} else if (attr == R.styleable.SpaceTabLayout_icon_six) {
if (numberOfTabs > 5)
defaultTabsixButtonIcon = a.getDrawable(attr);
} else if (attr == R.styleable.SpaceTabLayout_icon_seven) {
if (numberOfTabs > 6)
defaultTabsevenButtonIcon = a.getDrawable(attr);
} else if (attr == R.styleable.SpaceTabLayout_text_one) {
text_one = a.getString(attr);
} else if (attr == R.styleable.SpaceTabLayout_text_two) {
text_two = a.getString(attr);
} else if (attr == R.styleable.SpaceTabLayout_text_three) {
text_three = a.getString(attr);
}
}
a.recycle();
}
/**
* This will initialize the View and the ViewPager to properly display
* the fragments from the list.
*
* @param viewPager where you want the fragments to show
* @param fragmentManager needed for the fragment transactions
* @param fragments fragments to be displayed
*/
public void initialize(ViewPager viewPager, FragmentManager fragmentManager, List<Fragment> fragments) {
if (numberOfTabs < fragments.size() || numberOfTabs > fragments.size())
throw new IllegalArgumentException("You have " + numberOfTabs + " tabs.");
viewPager.setAdapter(new PagerAdapter(fragmentManager, fragments));
tabLayout.setupWithViewPager(viewPager);
getViewTreeObserver().addOnGlobalLayoutListener(
new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() {
tabSize.add(tabOne.getCustomView().getWidth());
tabSize.add(getWidth());
tabSize.add(backgroundImage.getWidth());
moveTab(tabSize, startingPosition);
if (currentPosition == 0) {
currentPosition = startingPosition;
tabs.get(startingPosition).getCustomView().setAlpha(0);
} else moveTab(tabSize, currentPosition);
if (Build.VERSION.SDK_INT < 16)
getViewTreeObserver().removeGlobalOnLayoutListener(this);
else getViewTreeObserver().removeOnGlobalLayoutListener(this);
}
});
viewPager.setCurrentItem(startingPosition);
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
if (SCROLL_STATE_DRAGGING) {
tabs.get(position).getCustomView().setAlpha(positionOffset);
if (position < numberOfTabs - 1) {
tabs.get(position + 1).getCustomView().setAlpha(1 - positionOffset);
}
if (!tabSize.isEmpty()) {
if (position < currentPosition) {
final float endX = -tabSize.get(2) / 2 + getX(position, tabSize) + 42;
final float startX = -tabSize.get(2) / 2 + getX(currentPosition, tabSize) + 42;
if (!tabSize.isEmpty()) {
float a = endX - (positionOffset * (endX - startX));
selectedTabLayout.setX(a);
}
} else {
position++;
final float endX = -tabSize.get(2) / 2 + getX(position, tabSize) + 42;
final float startX = -tabSize.get(2) / 2 + getX(currentPosition, tabSize) + 42;
float a = startX + (positionOffset * (endX - startX));
selectedTabLayout.setX(a);
}
}
}
}
@Override
public void onPageSelected(int position) {
for (Tab t : tabs) t.getCustomView().setAlpha(1);
tabs.get(position).getCustomView().setAlpha(0);
moveTab(tabSize, position);
currentPosition = position;
}
@Override
public void onPageScrollStateChanged(int state) {
SCROLL_STATE_DRAGGING = state == ViewPager.SCROLL_STATE_DRAGGING;
if (state == ViewPager.SCROLL_STATE_SETTLING) {
for (Tab t : tabs) t.getCustomView().setAlpha(1);
tabs.get(currentPosition).getCustomView().setAlpha(0);
moveTab(tabSize, currentPosition);
}
}
});
tabOne = tabLayout.getTabAt(0);
tabTwo = tabLayout.getTabAt(1);
tabThree = tabLayout.getTabAt(2);
if (numberOfTabs > 3) tabFour = tabLayout.getTabAt(3);
if (numberOfTabs > 4) tabFive = tabLayout.getTabAt(4);
if (numberOfTabs > 5) tabsix = tabLayout.getTabAt(5);
if (numberOfTabs > 6) tabseven = tabLayout.getTabAt(6);
if (numberOfTabs == 3 && !iconOnly) {
tabOne.setCustomView(R.layout.icon_text_tab_layout);
tabTwo.setCustomView(R.layout.icon_text_tab_layout);
tabThree.setCustomView(R.layout.icon_text_tab_layout);
tabs.add(tabOne);
tabs.add(tabTwo);
tabs.add(tabThree);
tabOneTextView = (TextView) tabOne.getCustomView().findViewById(R.id.tabTextView);
tabTwoTextView = (TextView) tabTwo.getCustomView().findViewById(R.id.tabTextView);
tabThreeTextView = (TextView) tabThree.getCustomView().findViewById(R.id.tabTextView);
tabOneImageView = (ImageView) tabOne.getCustomView().findViewById(R.id.tabImageView);
tabTwoImageView = (ImageView) tabTwo.getCustomView().findViewById(R.id.tabImageView);
tabThreeImageView = (ImageView) tabThree.getCustomView().findViewById(R.id.tabImageView);
} else {
tabOne.setCustomView(R.layout.icon_tab_layout);
tabTwo.setCustomView(R.layout.icon_tab_layout);
tabThree.setCustomView(R.layout.icon_tab_layout);
if (numberOfTabs > 3) tabFour.setCustomView(R.layout.icon_tab_layout);
if (numberOfTabs > 4) tabFive.setCustomView(R.layout.icon_tab_layout);
tabsix.setCustomView(R.layout.icon_tab_layout);
tabseven.setCustomView(R.layout.icon_tab_layout);
tabs.add(tabOne);
tabs.add(tabTwo);
tabs.add(tabThree);
if (numberOfTabs > 3) tabs.add(tabFour);
if (numberOfTabs > 4) tabs.add(tabFive);
if (numberOfTabs > 5) tabs.add(tabsix);
if (numberOfTabs > 6) tabs.add(tabseven);
tabOneImageView = (ImageView) tabOne.getCustomView().findViewById(R.id.tabImageView);
tabTwoImageView = (ImageView) tabTwo.getCustomView().findViewById(R.id.tabImageView);
tabThreeImageView = (ImageView) tabThree.getCustomView().findViewById(R.id.tabImageView);
if (numberOfTabs > 3)
tabFourImageView = (ImageView) tabFour.getCustomView().findViewById(R.id.tabImageView);
if (numberOfTabs > 4)
tabFiveImageView = (ImageView) tabFive.getCustomView().findViewById(R.id.tabImageView);
if (numberOfTabs > 5)
tabsixImageView = (ImageView) tabsix.getCustomView().findViewById(R.id.tabImageView);
if (numberOfTabs > 6)
tabsevenImageView = (ImageView) tabseven.getCustomView().findViewById(R.id.tabImageView);
}
selectedTabLayout.bringToFront();
tabLayout.setSelectedTabIndicatorHeight(0);
setAttrs();
}
private void setAttrs() {
setTabColor(defaultTabColor);
setButtonColor(defaultButtonColor);
if (numberOfTabs == 3 && !iconOnly) {
if (text_one != null) setTabOneText(text_one);
if (text_two != null) setTabTwoText(text_two);
if (text_three != null) setTabThreeText(text_three);
setTabOneTextColor(defaultTextColor);
setTabTwoTextColor(defaultTextColor);
setTabThreeTextColor(defaultTextColor);
}
setTabOneIcon(defaultTabOneButtonIcon);
setTabTwoIcon(defaultTabTwoButtonIcon);
setTabThreeIcon(defaultTabThreeButtonIcon);
if (numberOfTabs > 3) setTabFourIcon(defaultTabFourButtonIcon);
if (numberOfTabs > 4) setTabFiveIcon(defaultTabFiveButtonIcon);
if (numberOfTabs > 5) setTabsixIcon(defaultTabsixButtonIcon);
if (numberOfTabs > 6) setTabsevenIcon(defaultTabsevenButtonIcon);
}
private void moveTab(List<Integer> tabSize, int position) {
if (!tabSize.isEmpty()) {
float backgroundX = -tabSize.get(2) / 2 + getX(position, tabSize) + 42;
switch (position) {
case 0:
actionButton.setImageDrawable(defaultTabOneButtonIcon);
actionButton.setOnClickListener(tabOneOnClickListener);
break;
case 1:
actionButton.setImageDrawable(defaultTabTwoButtonIcon);
actionButton.setOnClickListener(tabTwoOnClickListener);
break;
case 2:
actionButton.setImageDrawable(defaultTabThreeButtonIcon);
actionButton.setOnClickListener(tabThreeOnClickListener);
break;
case 3:
actionButton.setImageDrawable(defaultTabFourButtonIcon);
actionButton.setOnClickListener(tabFourOnClickListener);
break;
case 4:
actionButton.setImageDrawable(defaultTabFiveButtonIcon);
actionButton.setOnClickListener(tabFiveOnClickListener);
break;
case 5:
actionButton.setImageDrawable(defaultTabsixButtonIcon);
actionButton.setOnClickListener(tabsixOnClickListener);
break;
case 6:
actionButton.setImageDrawable(defaultTabsevenButtonIcon);
actionButton.setOnClickListener(tabsevenOnClickListener);
break;
}
selectedTabLayout.animate().x(backgroundX).setDuration(100);
}
}
private float getX(int position, List<Integer> sizesList) {
if (!sizesList.isEmpty()) {
float tabWidth = sizesList.get(0);
float numberOfMargins = 2 * numberOfTabs;
float itemsWidth = (int) (numberOfTabs * tabWidth);
float marginsWidth = sizesList.get(1) - itemsWidth;
float margin = marginsWidth / numberOfMargins;
//TODO: this is a magic number
float half = 42;
float x = 0;
switch (position) {
case 0:
x = tabWidth / 2 + margin - half;
break;
case 1:
x = tabWidth * 3 / 2 + 3 * margin - half;
break;
case 2:
x = tabWidth * 5 / 2 + 5 * margin - half;
break;
case 3:
x = tabWidth * 7 / 2 + 7 * margin - half;
break;
case 4:
x = tabWidth * 9 / 2 + 9 * margin - half;
break;
case 5:
x = tabWidth * 11 / 2 + 11 * margin - half;
break;
case 6:
x = tabWidth * 13 / 2 + 13 * margin - half;
break;
}
return x;
}
return 0;
}
@Override
protected Parcelable onSaveInstanceState() {
Parcelable superState = super.onSaveInstanceState();
SavedState savedState = new SavedState(superState);
savedState.currentPosition = this.currentPosition;
return savedState;
}
@Override
protected void onRestoreInstanceState(Parcelable state) {
if (!(state instanceof SavedState)) {
super.onRestoreInstanceState(state);
return;
}
SavedState ss = (SavedState) state;
super.onRestoreInstanceState(ss.getSuperState());
this.currentPosition = ss.currentPosition;
}
//TODO: get this working :))
private void setCurrentPosition(int currentPosition) {
}
/**
* You can use it, for example, if want to set the same listener to all
* buttons and you can use a switch using this method to identify the
* button that was pressed.
*
* @return the current tab position
*/
public int getCurrentPosition() {
return currentPosition;
}
/**
* Used to set the same OnClickListener to each position of the button.
*
* @param l the listener you want to set
*/
@Override
public void setOnClickListener(OnClickListener l) {
setTabOneOnClickListener(l);
setTabTwoOnClickListener(l);
setTabThreeOnClickListener(l);
if (numberOfTabs > 3) setTabFourOnClickListener(l);
if (numberOfTabs > 4) setTabFiveOnClickListener(l);
if (numberOfTabs > 5) setTabsixOnClickListener(l);
if (numberOfTabs > 6) setTabsevenOnClickListener(l);
}
/***********************************************************************************************
* getters and setters for the OnClickListeners of each tab position
**********************************************************************************************/
public OnClickListener getTabOneOnClickListener() {
return tabOneOnClickListener;
}
public OnClickListener getTabTwoOnClickListener() {
return tabTwoOnClickListener;
}
public OnClickListener getTabThreeOnClickListener() {
return tabThreeOnClickListener;
}
public OnClickListener getTabFourOnClickListener() {
return tabFourOnClickListener;
}
public OnClickListener getTabFiveOnClickListener() {
return tabFiveOnClickListener;
}
public OnClickListener getTabsixOnClickListener() {
return tabsixOnClickListener;
}
public OnClickListener getTabsevenOnClickListener() {
return tabsevenOnClickListener;
}
public void setTabOneOnClickListener(OnClickListener l) {
tabOneOnClickListener = l;
}
public void setTabTwoOnClickListener(OnClickListener l) {
tabTwoOnClickListener = l;
}
public void setTabThreeOnClickListener(OnClickListener l) {
tabThreeOnClickListener = l;
}
public void setTabFourOnClickListener(OnClickListener l) {
if (numberOfTabs > 3) tabFourOnClickListener = l;
else throw new IllegalArgumentException("You have " + numberOfTabs + " tabs.");
}
public void setTabFiveOnClickListener(OnClickListener l) {
if (numberOfTabs > 4) tabFiveOnClickListener = l;
else throw new IllegalArgumentException("You have " + numberOfTabs + " tabs.");
}
public void setTabsixOnClickListener(OnClickListener l) {
if (numberOfTabs > 5) tabsixOnClickListener = l;
else throw new IllegalArgumentException("You have " + numberOfTabs + " tabs.");
}
public void setTabsevenOnClickListener(OnClickListener l) {
if (numberOfTabs > 6) tabsevenOnClickListener = l;
else throw new IllegalArgumentException("You have " + numberOfTabs + " tabs.");
}
/***********************************************************************************************
* Tab and Views getters, setters and customization for them
**********************************************************************************************/
public View getTabLayout() {
return parentLayout;
}
public void setTabColor(@ColorInt int backgroundColor) {
PorterDuffColorFilter porterDuffColorFilter = new PorterDuffColorFilter(backgroundColor, PorterDuff.Mode.SRC_ATOP);
Drawable image = ContextCompat.getDrawable(getContext(), R.drawable.background);
Drawable image2 = ContextCompat.getDrawable(getContext(), R.drawable.background2);
image.setColorFilter(porterDuffColorFilter);
image2.setColorFilter(porterDuffColorFilter);
backgroundImage.setImageDrawable(image);
backgroundImage2.setImageDrawable(image2);
}
public FloatingActionButton getButton() {
return actionButton;
}
public void setButtonColor(@ColorInt int backgroundColor) {
actionButton.setBackgroundTintList(ColorStateList.valueOf(backgroundColor));
}
public View getTabOneView() {
return tabOne.getCustomView();
}
public View getTabTwoView() {
return tabTwo.getCustomView();
}
public View getTabThreeView() {
return tabThree.getCustomView();
}
public View getTabFourView() {
if (numberOfTabs > 3) return tabFour.getCustomView();
else throw new IllegalArgumentException("You have " + numberOfTabs + " tabs.");
}
public View getTabFiveView() {
if (numberOfTabs > 4) return tabFive.getCustomView();
else throw new IllegalArgumentException("You have " + numberOfTabs + " tabs.");
}
public View getTabsixView() {
if (numberOfTabs > 4) return tabsix.getCustomView();
else throw new IllegalArgumentException("You have " + numberOfTabs + " tabs.");
}
public View getTabsevenView() {
if (numberOfTabs > 4) return tabseven.getCustomView();
else throw new IllegalArgumentException("You have " + numberOfTabs + " tabs.");
}
public void setTabOneView(View tabOneView) {
tabOne.setCustomView(tabOneView);
}
public void setTabOneView(@LayoutRes int tabOneLayout) {
tabOne.setCustomView(tabOneLayout);
}
public void setTabTwoView(View tabTwoView) {
tabTwo.setCustomView(tabTwoView);
}
public void setTabTwoView(@LayoutRes int tabTwoLayout) {
tabOne.setCustomView(tabTwoLayout);
}
public void setTabThreeView(View tabThreeView) {
tabThree.setCustomView(tabThreeView);
}
public void setTabThreeView(@LayoutRes int tabThreeLayout) {
tabThree.setCustomView(tabThreeLayout);
}
public void setTabFourView(View tabFourView) {
if (numberOfTabs > 3) tabFour.setCustomView(tabFourView);
else throw new IllegalArgumentException("You have " + numberOfTabs + " tabs.");
}
public void setTabFourView(@LayoutRes int tabFourLayout) {
if (numberOfTabs > 3) tabFour.setCustomView(tabFourLayout);
else throw new IllegalArgumentException("You have " + numberOfTabs + " tabs.");
}
public void setTabFiveView(View tabFiveView) {
if (numberOfTabs > 4) tabFour.setCustomView(tabFiveView);
else throw new IllegalArgumentException("You have " + numberOfTabs + " tabs.");
}
public void setTabFiveView(@LayoutRes int tabFiveLayout) {
if (numberOfTabs > 4) tabFour.setCustomView(tabFiveLayout);
else throw new IllegalArgumentException("You have " + numberOfTabs + " tabs.");
}
public void setTabsixView(View tabsixView) {
if (numberOfTabs > 5) tabsix.setCustomView(tabsixView);
else throw new IllegalArgumentException("You have " + numberOfTabs + " tabs.");
}
public void setTabsixView(@LayoutRes int tabsixView) {
if (numberOfTabs > 5) tabsix.setCustomView(tabsixView);
else throw new IllegalArgumentException("You have " + numberOfTabs + " tabs.");
}
public void setTabsevenView(View tabsevenLayout) {
if (numberOfTabs > 6) tabseven.setCustomView(tabsevenLayout);
else throw new IllegalArgumentException("You have " + numberOfTabs + " tabs.");
}
public void setTabsevenView(@LayoutRes int tabsevenLayout) {
if (numberOfTabs > 6) tabseven.setCustomView(tabsevenLayout);
else throw new IllegalArgumentException("You have " + numberOfTabs + " tabs.");
}
public void setTabOneIcon(@DrawableRes int tabOneIcon) {
defaultTabOneButtonIcon = getContext().getResources().getDrawable(tabOneIcon);
tabOneImageView.setImageResource(tabOneIcon);
}
public void setTabOneIcon(Drawable tabOneIcon) {
defaultTabOneButtonIcon = tabOneIcon;
tabOneImageView.setImageDrawable(tabOneIcon);
}
public void setTabTwoIcon(@DrawableRes int tabTwoIcon) {
defaultTabTwoButtonIcon = getContext().getResources().getDrawable(tabTwoIcon);
tabTwoImageView.setImageResource(tabTwoIcon);
}
public void setTabTwoIcon(Drawable tabTwoIcon) {
defaultTabTwoButtonIcon = tabTwoIcon;
tabTwoImageView.setImageDrawable(tabTwoIcon);
}
public void setTabThreeIcon(@DrawableRes int tabThreeIcon) {
defaultTabThreeButtonIcon = getContext().getResources().getDrawable(tabThreeIcon);
tabThreeImageView.setImageResource(tabThreeIcon);
}
public void setTabThreeIcon(Drawable tabThreeIcon) {
defaultTabThreeButtonIcon = tabThreeIcon;
tabThreeImageView.setImageDrawable(tabThreeIcon);
}
public void setTabFourIcon(@DrawableRes int tabFourIcon) {
if (numberOfTabs > 3) {
defaultTabFourButtonIcon = getContext().getResources().getDrawable(tabFourIcon);
tabFourImageView.setImageResource(tabFourIcon);
} else throw new IllegalArgumentException("You have " + numberOfTabs + " tabs.");
}
public void setTabFourIcon(Drawable tabFourIcon) {
if (numberOfTabs > 3) {
defaultTabFourButtonIcon = tabFourIcon;
tabFourImageView.setImageDrawable(tabFourIcon);
} else throw new IllegalArgumentException("You have " + numberOfTabs + " tabs.");
}
public void setTabFiveIcon(@DrawableRes int tabFiveIcon) {
if (numberOfTabs > 4) {
defaultTabFiveButtonIcon = getContext().getResources().getDrawable(tabFiveIcon);
tabFiveImageView.setImageResource(tabFiveIcon);
} else throw new IllegalArgumentException("You have " + numberOfTabs + " tabs.");
}
public void setTabFiveIcon(Drawable tabFiveIcon) {
if (numberOfTabs > 4) {
defaultTabFiveButtonIcon = tabFiveIcon;
tabFiveImageView.setImageDrawable(tabFiveIcon);
} else throw new IllegalArgumentException("You have " + numberOfTabs + " tabs.");
}
public void setTabsixIcon(@DrawableRes int tabsixIcon) {
if (numberOfTabs > 5) {
defaultTabsixButtonIcon = getContext().getResources().getDrawable(tabsixIcon);
tabsixImageView.setImageResource(tabsixIcon);
} else throw new IllegalArgumentException("You have " + numberOfTabs + " tabs.");
}
public void setTabsixIcon(Drawable tabsixIcon) {
if (numberOfTabs > 5) {
defaultTabsixButtonIcon = tabsixIcon;
tabsixImageView.setImageDrawable(tabsixIcon);
} else throw new IllegalArgumentException("You have " + numberOfTabs + " tabs.");
}
public void setTabsevenIcon(@DrawableRes int tabsevenIcon) {
if (numberOfTabs > 6) {
defaultTabsixButtonIcon = getContext().getResources().getDrawable(tabsevenIcon);
tabsixImageView.setImageResource(tabsevenIcon);
} else throw new IllegalArgumentException("You have " + numberOfTabs + " tabs.");
}
public void setTabsevenIcon(Drawable tabsevenIcon) {
if (numberOfTabs > 6) {
defaultTabsevenButtonIcon= tabsevenIcon;
tabsevenImageView.setImageDrawable(tabsevenIcon);
} else throw new IllegalArgumentException("You have " + numberOfTabs + " tabs.");
}
/***********************************************************************************************
* Customization for the TextViews when you have three tabs
**********************************************************************************************/
public void setTabOneText(String tabOneText) {
if (!iconOnly) tabOneTextView.setText(tabOneText);
else throw new IllegalArgumentException("You selected icons only.");
}
public void setTabOneText(@StringRes int tabOneText) {
if (!iconOnly) tabOneTextView.setText(tabOneText);
else throw new IllegalArgumentException("You selected icons only.");
}
public void setTabTwoText(String tabTwoText) {
if (!iconOnly) tabTwoTextView.setText(tabTwoText);
else throw new IllegalArgumentException("You selected icons only.");
}
public void setTabTwoText(@StringRes int tabTwoText) {
if (!iconOnly) tabTwoTextView.setText(tabTwoText);
else throw new IllegalArgumentException("You selected icons only.");
}
public void setTabThreeText(String tabThreeText) {
if (!iconOnly) tabThreeTextView.setText(tabThreeText);
else throw new IllegalArgumentException("You selected icons only.");
}
public void setTabThreeText(@StringRes int tabThreeText) {
if (!iconOnly) tabThreeTextView.setText(tabThreeText);
else throw new IllegalArgumentException("You selected icons only.");
}
public void setTabOneTextColor(@ColorInt int tabOneTextColor) {
if (!iconOnly) tabOneTextView.setTextColor(tabOneTextColor);
else throw new IllegalArgumentException("You selected icons only.");
}
public void setTabOneTextColor(ColorStateList colorStateList) {
if (!iconOnly) tabOneTextView.setTextColor(colorStateList);
else throw new IllegalArgumentException("You selected icons only.");
}
public void setTabTwoTextColor(@ColorInt int tabTwoTextColor) {
if (!iconOnly) tabTwoTextView.setTextColor(tabTwoTextColor);
else throw new IllegalArgumentException("You selected icons only.");
}
public void setTabTwoTextColor(ColorStateList colorStateList) {
if (!iconOnly) tabTwoTextView.setTextColor(colorStateList);
else throw new IllegalArgumentException("You selected icons only.");
}
public void setTabThreeTextColor(@ColorInt int tabThreeTextColor) {
if (!iconOnly) tabThreeTextView.setTextColor(tabThreeTextColor);
else throw new IllegalArgumentException("You selected icons only.");
}
public void setTabThreeTextColor(ColorStateList colorStateList) {
if (!iconOnly) tabThreeTextView.setTextColor(colorStateList);
else throw new IllegalArgumentException("You selected icons only.");
}
static class SavedState extends BaseSavedState {
int currentPosition;
SavedState(Parcelable superState) {
super(superState);
}
private SavedState(Parcel in) {
super(in);
this.currentPosition = in.readInt();
}
@Override
public void writeToParcel(Parcel out, int flags) {
super.writeToParcel(out, flags);
out.writeInt(this.currentPosition);
}
public static final Parcelable.Creator<SavedState> CREATOR =
new Parcelable.Creator<SavedState>() {
public SavedState createFromParcel(Parcel in) {
return new SavedState(in);
}
public SavedState[] newArray(int size) {
return new SavedState[size];
}
};
}
}
`
Submit a pull request, maybe @long1eu will merge it.
Hello, nice TabLayout design, but can I easily add more tabs ?!