Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add more tabs !! #37

Open
mhrlive opened this issue Nov 13, 2018 · 2 comments
Open

Add more tabs !! #37

mhrlive opened this issue Nov 13, 2018 · 2 comments

Comments

@mhrlive
Copy link

mhrlive commented Nov 13, 2018

Hello, nice TabLayout design, but can I easily add more tabs ?!

@mhrlive
Copy link
Author

mhrlive commented Nov 29, 2018

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];
                }
            };
}

}

`

@jackz314
Copy link

jackz314 commented Jan 4, 2019

Submit a pull request, maybe @long1eu will merge it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants