diff --git a/bottom-bar/src/main/java/com/roughike/bottombar/BottomBar.java b/bottom-bar/src/main/java/com/roughike/bottombar/BottomBar.java index fc54174d..efbf7824 100644 --- a/bottom-bar/src/main/java/com/roughike/bottombar/BottomBar.java +++ b/bottom-bar/src/main/java/com/roughike/bottombar/BottomBar.java @@ -14,6 +14,7 @@ import android.os.Parcelable; import android.support.annotation.ColorInt; import android.support.annotation.IdRes; +import android.support.annotation.NonNull; import android.support.annotation.Nullable; import android.support.annotation.VisibleForTesting; import android.support.annotation.XmlRes; @@ -31,6 +32,7 @@ import android.widget.TextView; import android.widget.Toast; +import java.util.ArrayList; import java.util.List; /* @@ -252,6 +254,31 @@ private BottomBarTab.Config getTabConfig() { .build(); } + @Override + protected void onVisibilityChanged(@NonNull View changedView, int visibility) { + super.onVisibilityChanged(changedView, visibility); + + boolean someViewsGone = false; + ArrayList visibleTabs = new ArrayList<>(); + int tabIndex = 0; + for (int i = 0; i < getTabCount(); i++) { + BottomBarTab currentTab = getTabAtPosition(i); + if (currentTab.getVisibility() == VISIBLE) { + currentTab.setIndexInContainer(tabIndex); + visibleTabs.add(currentTab); + tabIndex++; + } + if (currentTab.getVisibility() == GONE && !someViewsGone) { + someViewsGone = true; + } + + } + if (someViewsGone) { + tabContainer.removeAllViews(); + updateItems(visibleTabs); + } + } + private void updateItems(final List bottomBarItems) { int index = 0; int biggestWidth = 0;