Skip to content

Commit 19e662b

Browse files
adampAndroid (Google) Code Review
authored andcommitted
Merge "Fix some ActionBar menu issues around config changes" into jb-mr1-dev
2 parents 2a642a4 + d5c81db commit 19e662b

File tree

4 files changed

+35
-2
lines changed

4 files changed

+35
-2
lines changed

core/java/com/android/internal/view/menu/ActionMenuItemView.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
package com.android.internal.view.menu;
1818

1919
import android.content.Context;
20+
import android.content.res.Configuration;
2021
import android.content.res.Resources;
2122
import android.content.res.TypedArray;
2223
import android.graphics.Rect;
@@ -79,6 +80,15 @@ public ActionMenuItemView(Context context, AttributeSet attrs, int defStyle) {
7980
mSavedPaddingLeft = -1;
8081
}
8182

83+
@Override
84+
public void onConfigurationChanged(Configuration newConfig) {
85+
super.onConfigurationChanged(newConfig);
86+
87+
mAllowTextWithIcon = getContext().getResources().getBoolean(
88+
com.android.internal.R.bool.config_allowActionMenuItemTextWithIcon);
89+
updateTextButtonVisibility();
90+
}
91+
8292
@Override
8393
public void setPadding(int l, int t, int r, int b) {
8494
mSavedPaddingLeft = l;
@@ -242,6 +252,11 @@ public boolean onLongClick(View v) {
242252

243253
@Override
244254
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
255+
if (MeasureSpec.getMode(heightMeasureSpec) == MeasureSpec.AT_MOST) {
256+
// Fill all available height.
257+
heightMeasureSpec = MeasureSpec.makeMeasureSpec(
258+
MeasureSpec.getSize(heightMeasureSpec), MeasureSpec.EXACTLY);
259+
}
245260
final boolean textVisible = hasText();
246261
if (textVisible && mSavedPaddingLeft >= 0) {
247262
super.setPadding(mSavedPaddingLeft, getPaddingTop(),

core/java/com/android/internal/view/menu/ActionMenuPresenter.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -576,6 +576,16 @@ public boolean needsDividerBefore() {
576576
public boolean needsDividerAfter() {
577577
return false;
578578
}
579+
580+
@Override
581+
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
582+
if (MeasureSpec.getMode(heightMeasureSpec) == MeasureSpec.AT_MOST) {
583+
// Fill available height
584+
heightMeasureSpec = MeasureSpec.makeMeasureSpec(
585+
MeasureSpec.getSize(heightMeasureSpec), MeasureSpec.EXACTLY);
586+
}
587+
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
588+
}
579589
}
580590

581591
private class OverflowPopup extends MenuPopupHelper {

core/java/com/android/internal/view/menu/ActionMenuView.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@
1515
*/
1616
package com.android.internal.view.menu;
1717

18+
import com.android.internal.R;
19+
1820
import android.content.Context;
1921
import android.content.res.Configuration;
2022
import android.content.res.TypedArray;
@@ -26,8 +28,6 @@
2628
import android.view.accessibility.AccessibilityEvent;
2729
import android.widget.LinearLayout;
2830

29-
import com.android.internal.R;
30-
3131
/**
3232
* @hide
3333
*/
@@ -73,6 +73,11 @@ public boolean isExpandedFormat() {
7373
return mFormatItems;
7474
}
7575

76+
public void setMaxItemHeight(int maxItemHeight) {
77+
mMaxItemHeight = maxItemHeight;
78+
requestLayout();
79+
}
80+
7681
@Override
7782
public void onConfigurationChanged(Configuration newConfig) {
7883
super.onConfigurationChanged(newConfig);

core/java/com/android/internal/widget/AbsActionBarView.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,9 @@ public void setSplitWhenNarrow(boolean splitWhenNarrow) {
9595

9696
public void setContentHeight(int height) {
9797
mContentHeight = height;
98+
if (mMenuView != null) {
99+
mMenuView.setMaxItemHeight(mContentHeight);
100+
}
98101
requestLayout();
99102
}
100103

0 commit comments

Comments
 (0)