Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import android.content.Context;
- import android.os.Build;
- import android.support.annotation.NonNull;
- import android.support.design.widget.TabLayout;
- import android.util.AttributeSet;
- /**
- * Created by dale on 2/28/17.
- * Tab Layout that auto converts from MODE_FIXED to MODE_SCROLLABLE when the tabs don't fit anymore.
- */
- public class FillScrollableTabLayout extends TabLayout {
- private int scrollableTabMinWidth;
- public FillScrollableTabLayout(Context context) {
- super(context);
- initialize();
- }
- public FillScrollableTabLayout(Context context, AttributeSet attrs) {
- super(context, attrs);
- initialize();
- }
- public FillScrollableTabLayout(Context context, AttributeSet attrs, int defStyleAttr) {
- super(context, attrs, defStyleAttr);
- initialize();
- }
- private void initialize() {
- // waiting for google to make this an attr
- scrollableTabMinWidth = getResources()
- .getDimensionPixelSize(android.support.design.R.dimen.design_tab_scrollable_min_width);
- }
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- super.onMeasure(widthMeasureSpec, heightMeasureSpec);
- adjustSize();
- }
- @Override
- public void addTab(@NonNull Tab tab) {
- super.addTab(tab);
- }
- private void adjustSize() {
- int totalTabSize = 0;
- for(int i=0; i < getTabCount(); i++) {
- if(getTabAt(i).getCustomView() != null) {
- totalTabSize += getTabAt(i).getCustomView().getMeasuredWidth() > scrollableTabMinWidth ?
- getTabAt(i).getCustomView().getMeasuredWidth() : scrollableTabMinWidth;
- }
- }
- if(totalTabSize >= getMeasuredWidth()) {
- setTabMode(TabLayout.MODE_SCROLLABLE);
- }
- else {
- setTabMode(TabLayout.MODE_FIXED);
- setTabGravity(TabLayout.GRAVITY_FILL);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement