Skip to content

Commit ca4100d

Browse files
adampAndroid (Google) Code Review
authored andcommitted
Merge "Fix bug 5534667 - Action bar icons need more space on tablet" into ics-mr1
2 parents f136aa3 + 24340af commit ca4100d

File tree

7 files changed

+45
-5
lines changed

7 files changed

+45
-5
lines changed

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

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818

1919
import android.content.Context;
2020
import android.content.res.Resources;
21+
import android.content.res.TypedArray;
2122
import android.graphics.Rect;
2223
import android.graphics.drawable.Drawable;
2324
import android.text.TextUtils;
@@ -46,8 +47,8 @@ public class ActionMenuItemView extends LinearLayout
4647
private ImageButton mImageButton;
4748
private Button mTextButton;
4849
private boolean mAllowTextWithIcon;
49-
private boolean mShowTextAllCaps;
5050
private boolean mExpandedFormat;
51+
private int mMinWidth;
5152

5253
public ActionMenuItemView(Context context) {
5354
this(context, null);
@@ -62,7 +63,11 @@ public ActionMenuItemView(Context context, AttributeSet attrs, int defStyle) {
6263
final Resources res = context.getResources();
6364
mAllowTextWithIcon = res.getBoolean(
6465
com.android.internal.R.bool.config_allowActionMenuItemTextWithIcon);
65-
mShowTextAllCaps = res.getBoolean(com.android.internal.R.bool.config_actionMenuItemAllCaps);
66+
TypedArray a = context.obtainStyledAttributes(attrs,
67+
com.android.internal.R.styleable.ActionMenuItemView, 0, 0);
68+
mMinWidth = a.getDimensionPixelSize(
69+
com.android.internal.R.styleable.ActionMenuItemView_minWidth, 0);
70+
a.recycle();
6671
}
6772

6873
@Override
@@ -228,4 +233,21 @@ public boolean onLongClick(View v) {
228233
cheatSheet.show();
229234
return true;
230235
}
236+
237+
@Override
238+
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
239+
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
240+
241+
final int widthMode = MeasureSpec.getMode(widthMeasureSpec);
242+
final int specSize = MeasureSpec.getSize(widthMeasureSpec);
243+
final int oldMeasuredWidth = getMeasuredWidth();
244+
final int targetWidth = widthMode == MeasureSpec.AT_MOST ? Math.min(specSize, mMinWidth)
245+
: mMinWidth;
246+
247+
if (widthMode != MeasureSpec.EXACTLY && mMinWidth > 0 && oldMeasuredWidth < targetWidth) {
248+
// Remeasure at exactly the minimum width.
249+
super.onMeasure(MeasureSpec.makeMeasureSpec(targetWidth, MeasureSpec.EXACTLY),
250+
heightMeasureSpec);
251+
}
252+
}
231253
}

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

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,7 +91,14 @@ public void updateMenuView(boolean cleared) {
9191
MenuItemImpl item = visibleItems.get(i);
9292
if (shouldIncludeItem(childIndex, item)) {
9393
final View convertView = parent.getChildAt(childIndex);
94+
final MenuItemImpl oldItem = convertView instanceof MenuView.ItemView ?
95+
((MenuView.ItemView) convertView).getItemData() : null;
9496
final View itemView = getItemView(item, convertView, parent);
97+
if (item != oldItem) {
98+
// Don't let old states linger with new data.
99+
itemView.setPressed(false);
100+
itemView.jumpDrawablesToCurrentState();
101+
}
95102
if (itemView != convertView) {
96103
addItemView(itemView, childIndex);
97104
}

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -518,6 +518,7 @@ public void setSubtitle(CharSequence subtitle) {
518518

519519
public void setHomeButtonEnabled(boolean enable) {
520520
mHomeLayout.setEnabled(enable);
521+
mHomeLayout.setFocusable(enable);
521522
// Make sure the home button has an accurate content description for accessibility.
522523
if (!enable) {
523524
mHomeLayout.setContentDescription(null);

core/res/res/values-sw600dp/dimens.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,5 +54,7 @@
5454
<!-- Compensate for double margin : preference_screen_side_margin + 4 (frame background shadow) = -preference_screen_side_margin_negative -->
5555
<dimen name="preference_screen_side_margin_negative">-4dp</dimen>
5656

57+
<!-- Minimum width for an action button in the menu area of an action bar -->
58+
<dimen name="action_button_min_width">64dip</dimen>
5759
</resources>
5860

core/res/res/values/attrs.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2394,6 +2394,10 @@
23942394
<attr name="description" />
23952395
</declare-styleable>
23962396

2397+
<declare-styleable name="ActionMenuItemView">
2398+
<attr name="minWidth" />
2399+
</declare-styleable>
2400+
23972401
<!-- =============================== -->
23982402
<!-- Widget package class attributes -->
23992403
<!-- =============================== -->

core/res/res/values/dimens.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,4 +189,7 @@
189189
<dimen name="default_app_widget_padding_top">8dp</dimen>
190190
<dimen name="default_app_widget_padding_right">8dp</dimen>
191191
<dimen name="default_app_widget_padding_bottom">8dp</dimen>
192+
193+
<!-- Minimum width for an action button in the menu area of an action bar -->
194+
<dimen name="action_button_min_width">56dip</dimen>
192195
</resources>

core/res/res/values/styles.xml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1161,8 +1161,9 @@ please see styles_device_defaults.xml.
11611161
<item name="android:background">?android:attr/actionBarItemBackground</item>
11621162
<item name="android:paddingLeft">12dip</item>
11631163
<item name="android:paddingRight">12dip</item>
1164-
<item name="android:minWidth">56dip</item>
1164+
<item name="android:minWidth">@android:dimen/action_button_min_width</item>
11651165
<item name="android:minHeight">?android:attr/actionBarSize</item>
1166+
<item name="android:gravity">center</item>
11661167
</style>
11671168

11681169
<style name="Widget.ActionButton.Overflow">
@@ -1359,7 +1360,7 @@ please see styles_device_defaults.xml.
13591360
<item name="android:textSize">12sp</item>
13601361
<item name="android:textStyle">bold</item>
13611362
<item name="android:textColor">?android:attr/actionMenuTextColor</item>
1362-
<item name="android:textAllCaps">true</item>
1363+
<item name="android:textAllCaps">@android:bool/config_actionMenuItemAllCaps</item>
13631364
</style>
13641365

13651366
<style name="TextAppearance.Holo.Widget.ActionMode">
@@ -1883,7 +1884,7 @@ please see styles_device_defaults.xml.
18831884
</style>
18841885

18851886
<style name="Widget.Holo.ActionButton" parent="Widget.ActionButton">
1886-
<item name="android:minWidth">56dip</item>
1887+
<item name="android:minWidth">@android:dimen/action_button_min_width</item>
18871888
<item name="android:gravity">center</item>
18881889
<item name="android:paddingLeft">12dip</item>
18891890
<item name="android:paddingRight">12dip</item>

0 commit comments

Comments
 (0)