From d6acdded219f5c8ed93166605cccd3860f9b95db Mon Sep 17 00:00:00 2001 From: Aurimas Liutikas Date: Fri, 9 Dec 2016 01:26:08 +0000 Subject: [PATCH] resolve merge conflicts of 9e1bec8 to master Change-Id: Ia992f6a6995d30961d7a258337102da792561d5f GitOrigin-RevId=5fa3fd281ab74ca1dbc56550e830fe2ef9682da6 PiperOrigin-RevId: 141505173 --- .../internal/BottomNavigationMenuView.java | 11 ++++++----- .../design/widget/BottomNavigationView.java | 3 +-- .../design/widget/BottomNavigationViewTest.java | 16 ++++++++++++++++ 3 files changed, 23 insertions(+), 7 deletions(-) diff --git a/lib/src/android/support/design/internal/BottomNavigationMenuView.java b/lib/src/android/support/design/internal/BottomNavigationMenuView.java index 096bdd83a..e144fae1f 100644 --- a/lib/src/android/support/design/internal/BottomNavigationMenuView.java +++ b/lib/src/android/support/design/internal/BottomNavigationMenuView.java @@ -97,10 +97,6 @@ public class BottomNavigationMenuView extends ViewGroup implements MenuView { @Override public void initialize(MenuBuilder menu) { mMenu = menu; - if (mMenu == null) return; - if (mMenu.size() > mActiveButton) { - mMenu.getItem(mActiveButton).setChecked(true); - } } @Override @@ -125,7 +121,7 @@ public class BottomNavigationMenuView extends ViewGroup implements MenuView { } } } else { - final int maxAvailable = width / count; + final int maxAvailable = width / (count == 0 ? 1 : count); final int childWidth = Math.min(maxAvailable, mActiveItemMaxWidth); int extra = width - childWidth * count; for (int i = 0; i < count; i++) { @@ -257,6 +253,9 @@ public class BottomNavigationMenuView extends ViewGroup implements MenuView { } } removeAllViews(); + if (mMenu.size() == 0) { + return; + } mButtons = new BottomNavigationItemView[mMenu.size()]; mShiftingMode = mMenu.size() > 3; for (int i = 0; i < mMenu.size(); i++) { @@ -274,6 +273,8 @@ public class BottomNavigationMenuView extends ViewGroup implements MenuView { child.setOnClickListener(mOnClickListener); addView(child); } + mActiveButton = Math.min(mMenu.size() - 1, mActiveButton); + mMenu.getItem(mActiveButton).setChecked(true); } public void updateMenuView() { diff --git a/lib/src/android/support/design/widget/BottomNavigationView.java b/lib/src/android/support/design/widget/BottomNavigationView.java index 8a8e0bd05..266c4a12b 100644 --- a/lib/src/android/support/design/widget/BottomNavigationView.java +++ b/lib/src/android/support/design/widget/BottomNavigationView.java @@ -117,7 +117,7 @@ public class BottomNavigationView extends FrameLayout { mPresenter.setBottomNavigationMenuView(mMenuView); mMenuView.setPresenter(mPresenter); mMenu.addMenuPresenter(mPresenter); - + mPresenter.initForMenu(getContext(), mMenu); // Custom attributes TintTypedArray a = TintTypedArray.obtainStyledAttributes(context, attrs, @@ -188,7 +188,6 @@ public class BottomNavigationView extends FrameLayout { public void inflateMenu(int resId) { mPresenter.setUpdateSuspended(true); getMenuInflater().inflate(resId, mMenu); - mPresenter.initForMenu(getContext(), mMenu); mPresenter.setUpdateSuspended(false); mPresenter.updateMenuView(true); } diff --git a/lib/tests/src/android/support/design/widget/BottomNavigationViewTest.java b/lib/tests/src/android/support/design/widget/BottomNavigationViewTest.java index a14b33ba6..9c1c6cac4 100644 --- a/lib/tests/src/android/support/design/widget/BottomNavigationViewTest.java +++ b/lib/tests/src/android/support/design/widget/BottomNavigationViewTest.java @@ -42,10 +42,12 @@ import android.support.annotation.ColorInt; import android.support.design.test.R; import android.support.design.testutils.TestDrawable; import android.support.design.testutils.TestUtilsMatchers; +import android.support.test.annotation.UiThreadTest; import android.support.test.filters.SmallTest; import android.support.v4.content.res.ResourcesCompat; import android.view.Menu; import android.view.MenuItem; +import android.view.ViewGroup; import org.junit.Before; import org.junit.Test; @@ -77,6 +79,20 @@ public class BottomNavigationViewTest mMenuStringContent.put(R.id.destination_people, res.getString(R.string.navigate_people)); } + @UiThreadTest + @Test + @SmallTest + public void testAddItemsWithoutMenuInflation() { + BottomNavigationView navigation = new BottomNavigationView(mActivityTestRule.getActivity()); + mActivityTestRule.getActivity().setContentView(navigation); + navigation.getMenu().add("Item1"); + navigation.getMenu().add("Item2"); + assertEquals(2, navigation.getMenu().size()); + navigation.getMenu().removeItem(0); + navigation.getMenu().removeItem(0); + assertEquals(0, navigation.getMenu().size()); + } + @Test @SmallTest public void testBasics() {