Skip to content

Commit 93825ed

Browse files
author
Nicolas Gonzalez
committed
Merge remote-tracking branch 'upstream/develop' into develop
2 parents 1a29b24 + f20808e commit 93825ed

File tree

4 files changed

+47
-15
lines changed

4 files changed

+47
-15
lines changed

lib/res/values/dimens.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,9 @@
6868
<dimen name="design_bottom_navigation_margin">8dp</dimen>
6969
<dimen name="design_bottom_navigation_item_min_width">56dp</dimen>
7070
<dimen name="design_bottom_navigation_item_max_width">96dp</dimen>
71+
<dimen name="design_bottom_navigation_item_min_height">56dp</dimen>
72+
<dimen name="design_bottom_navigation_item_max_height">96dp</dimen>
7173
<dimen name="design_bottom_navigation_active_item_max_width">168dp</dimen>
72-
<dimen name="design_bottom_navigation_active_item_max_height">56dp</dimen>
74+
<dimen name="design_bottom_navigation_active_item_max_height">168dp</dimen>
7375

7476
</resources>

lib/src/android/support/design/internal/BottomNavigationItemView.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import android.util.AttributeSet;
3535
import android.view.Gravity;
3636
import android.view.LayoutInflater;
37+
import android.view.ViewGroup;
3738
import android.widget.FrameLayout;
3839
import android.widget.ImageView;
3940
import android.widget.TextView;
@@ -144,7 +145,8 @@ public void setChecked(boolean checked) {
144145
if (mShiftingMode) {
145146
if (checked) {
146147
LayoutParams iconParams = (LayoutParams) mIcon.getLayoutParams();
147-
iconParams.gravity = Gravity.CENTER_HORIZONTAL | Gravity.TOP;
148+
iconParams.gravity = mTabletMode ? Gravity.CENTER :
149+
(Gravity.CENTER_HORIZONTAL | Gravity.TOP);
148150
iconParams.topMargin = mDefaultMargin;
149151
mIcon.setLayoutParams(iconParams);
150152
mLargeLabel.setVisibility(VISIBLE);

lib/src/android/support/design/internal/BottomNavigationMenuView.java

Lines changed: 41 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -31,14 +31,18 @@
3131
import android.support.v7.view.menu.MenuItemImpl;
3232
import android.support.v7.view.menu.MenuView;
3333
import android.util.AttributeSet;
34+
import android.view.Gravity;
3435
import android.view.View;
3536
import android.view.ViewGroup;
37+
import android.widget.FrameLayout;
3638

3739
/** @hide For internal use only. */
3840
@RestrictTo(LIBRARY_GROUP)
3941
public class BottomNavigationMenuView extends ViewGroup implements MenuView {
4042
private final int mInactiveItemMaxWidth;
4143
private final int mInactiveItemMinWidth;
44+
private final int mInactiveItemMaxHeight;
45+
private final int mInactiveItemMinHeight;
4246
private final int mActiveItemMaxWidth;
4347
private final int mActiveItemMaxHeight;
4448
private final int mItemWidth;
@@ -72,6 +76,10 @@ public BottomNavigationMenuView(Context context, AttributeSet attrs) {
7276
res.getDimensionPixelSize(R.dimen.design_bottom_navigation_item_max_width);
7377
mInactiveItemMinWidth =
7478
res.getDimensionPixelSize(R.dimen.design_bottom_navigation_item_min_width);
79+
mInactiveItemMaxHeight =
80+
res.getDimensionPixelSize(R.dimen.design_bottom_navigation_item_max_height);
81+
mInactiveItemMinHeight =
82+
res.getDimensionPixelSize(R.dimen.design_bottom_navigation_item_min_height);
7583
mActiveItemMaxWidth =
7684
res.getDimensionPixelSize(R.dimen.design_bottom_navigation_active_item_max_width);
7785
mActiveItemMaxHeight =
@@ -112,7 +120,10 @@ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
112120

113121
final int heightSpec = MeasureSpec.makeMeasureSpec(mItemHeight, MeasureSpec.EXACTLY);
114122

115-
if (mShiftingMode) {
123+
if (mTabletMode) {
124+
measureTabletMode(heightMeasureSpec);
125+
return;
126+
} else if (mShiftingMode) {
116127
final int inactiveCount = count - 1;
117128
final int activeMaxAvailable = width - inactiveCount * mInactiveItemMinWidth;
118129
final int activeWidth = Math.min(activeMaxAvailable, mActiveItemMaxWidth);
@@ -126,9 +137,6 @@ protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
126137
extra--;
127138
}
128139
}
129-
} else if (mTabletMode) {
130-
measureTabletMode(heightMeasureSpec);
131-
return;
132140
} else {
133141
final int maxAvailable = width / (count == 0 ? 1 : count);
134142
final int childWidth = Math.min(maxAvailable, mActiveItemMaxWidth);
@@ -166,14 +174,30 @@ private void measureTabletMode(int heightMeasureSpec) {
166174

167175
final int widthSpec = MeasureSpec.makeMeasureSpec(mItemWidth, MeasureSpec.EXACTLY);
168176

169-
final int maxAvailable = height / (count == 0 ? 1 : count);
170-
final int childHeight = Math.min(maxAvailable, mActiveItemMaxHeight);
171-
int extra = height - childHeight * count;
172-
for (int i = 0; i < count; i++) {
173-
mTempChildSizes[i] = childHeight;
174-
if (extra > 0) {
175-
mTempChildSizes[i]++;
176-
extra--;
177+
if (mShiftingMode) {
178+
final int inactiveCount = count - 1;
179+
final int activeMaxAvailable = height - inactiveCount * mInactiveItemMinHeight;
180+
final int activeHeight = Math.min(activeMaxAvailable, mActiveItemMaxHeight);
181+
final int inactiveMaxAvailable = (height - activeHeight) / inactiveCount;
182+
final int inactiveHeight = Math.min(inactiveMaxAvailable, mInactiveItemMaxHeight);
183+
int extra = height - activeHeight - inactiveHeight * inactiveCount;
184+
for (int i = 0; i < count; i++) {
185+
mTempChildSizes[i] = (i == mActiveButton) ? activeHeight : inactiveHeight;
186+
if (extra > 0) {
187+
mTempChildSizes[i]++;
188+
extra--;
189+
}
190+
}
191+
} else {
192+
final int maxAvailable = height / (count == 0 ? 1 : count);
193+
final int childHeight = Math.min(maxAvailable, mActiveItemMaxHeight);
194+
int extra = height - childHeight * count;
195+
for (int i = 0; i < count; i++) {
196+
mTempChildSizes[i] = childHeight;
197+
if (extra > 0) {
198+
mTempChildSizes[i]++;
199+
extra--;
200+
}
177201
}
178202
}
179203

@@ -334,6 +358,11 @@ public void buildMenuView() {
334358
}
335359
mButtons = new BottomNavigationItemView[mMenu.size()];
336360
mShiftingMode = mMenu.size() > 3;
361+
if (mTabletMode) {
362+
FrameLayout.LayoutParams params = (FrameLayout.LayoutParams) getLayoutParams();
363+
params.gravity = mShiftingMode ? Gravity.CENTER : Gravity.TOP;
364+
setLayoutParams(params);
365+
}
337366
for (int i = 0; i < mMenu.size(); i++) {
338367
mPresenter.setUpdateSuspended(true);
339368
mMenu.getItem(i).setCheckable(true);

lib/src/android/support/design/widget/BottomNavigationView.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -161,7 +161,6 @@ public BottomNavigationView(Context context, AttributeSet attrs, int defStyleAtt
161161

162162
if (a.hasValue(R.styleable.BottomNavigationView_tabletMode)) {
163163
mTabletMode = a.getBoolean(R.styleable.BottomNavigationView_tabletMode, false);
164-
params.gravity = Gravity.TOP;
165164
mMenuView.setTabletMode(mTabletMode);
166165
}
167166

0 commit comments

Comments
 (0)