Merge "Fix bug 5534667 - Action bar icons need more space on tablet" into ics-mr1

This commit is contained in:
Adam Powell
2011-11-01 10:58:58 -07:00
committed by Android (Google) Code Review
7 changed files with 45 additions and 5 deletions

View File

@@ -18,6 +18,7 @@ package com.android.internal.view.menu;
import android.content.Context; import android.content.Context;
import android.content.res.Resources; import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Rect; import android.graphics.Rect;
import android.graphics.drawable.Drawable; import android.graphics.drawable.Drawable;
import android.text.TextUtils; import android.text.TextUtils;
@@ -46,8 +47,8 @@ public class ActionMenuItemView extends LinearLayout
private ImageButton mImageButton; private ImageButton mImageButton;
private Button mTextButton; private Button mTextButton;
private boolean mAllowTextWithIcon; private boolean mAllowTextWithIcon;
private boolean mShowTextAllCaps;
private boolean mExpandedFormat; private boolean mExpandedFormat;
private int mMinWidth;
public ActionMenuItemView(Context context) { public ActionMenuItemView(Context context) {
this(context, null); this(context, null);
@@ -62,7 +63,11 @@ public class ActionMenuItemView extends LinearLayout
final Resources res = context.getResources(); final Resources res = context.getResources();
mAllowTextWithIcon = res.getBoolean( mAllowTextWithIcon = res.getBoolean(
com.android.internal.R.bool.config_allowActionMenuItemTextWithIcon); com.android.internal.R.bool.config_allowActionMenuItemTextWithIcon);
mShowTextAllCaps = res.getBoolean(com.android.internal.R.bool.config_actionMenuItemAllCaps); TypedArray a = context.obtainStyledAttributes(attrs,
com.android.internal.R.styleable.ActionMenuItemView, 0, 0);
mMinWidth = a.getDimensionPixelSize(
com.android.internal.R.styleable.ActionMenuItemView_minWidth, 0);
a.recycle();
} }
@Override @Override
@@ -228,4 +233,21 @@ public class ActionMenuItemView extends LinearLayout
cheatSheet.show(); cheatSheet.show();
return true; return true;
} }
@Override
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
final int widthMode = MeasureSpec.getMode(widthMeasureSpec);
final int specSize = MeasureSpec.getSize(widthMeasureSpec);
final int oldMeasuredWidth = getMeasuredWidth();
final int targetWidth = widthMode == MeasureSpec.AT_MOST ? Math.min(specSize, mMinWidth)
: mMinWidth;
if (widthMode != MeasureSpec.EXACTLY && mMinWidth > 0 && oldMeasuredWidth < targetWidth) {
// Remeasure at exactly the minimum width.
super.onMeasure(MeasureSpec.makeMeasureSpec(targetWidth, MeasureSpec.EXACTLY),
heightMeasureSpec);
}
}
} }

View File

@@ -91,7 +91,14 @@ public abstract class BaseMenuPresenter implements MenuPresenter {
MenuItemImpl item = visibleItems.get(i); MenuItemImpl item = visibleItems.get(i);
if (shouldIncludeItem(childIndex, item)) { if (shouldIncludeItem(childIndex, item)) {
final View convertView = parent.getChildAt(childIndex); final View convertView = parent.getChildAt(childIndex);
final MenuItemImpl oldItem = convertView instanceof MenuView.ItemView ?
((MenuView.ItemView) convertView).getItemData() : null;
final View itemView = getItemView(item, convertView, parent); final View itemView = getItemView(item, convertView, parent);
if (item != oldItem) {
// Don't let old states linger with new data.
itemView.setPressed(false);
itemView.jumpDrawablesToCurrentState();
}
if (itemView != convertView) { if (itemView != convertView) {
addItemView(itemView, childIndex); addItemView(itemView, childIndex);
} }

View File

@@ -518,6 +518,7 @@ public class ActionBarView extends AbsActionBarView {
public void setHomeButtonEnabled(boolean enable) { public void setHomeButtonEnabled(boolean enable) {
mHomeLayout.setEnabled(enable); mHomeLayout.setEnabled(enable);
mHomeLayout.setFocusable(enable);
// Make sure the home button has an accurate content description for accessibility. // Make sure the home button has an accurate content description for accessibility.
if (!enable) { if (!enable) {
mHomeLayout.setContentDescription(null); mHomeLayout.setContentDescription(null);

View File

@@ -54,5 +54,7 @@
<!-- Compensate for double margin : preference_screen_side_margin + 4 (frame background shadow) = -preference_screen_side_margin_negative --> <!-- Compensate for double margin : preference_screen_side_margin + 4 (frame background shadow) = -preference_screen_side_margin_negative -->
<dimen name="preference_screen_side_margin_negative">-4dp</dimen> <dimen name="preference_screen_side_margin_negative">-4dp</dimen>
<!-- Minimum width for an action button in the menu area of an action bar -->
<dimen name="action_button_min_width">64dip</dimen>
</resources> </resources>

View File

@@ -2394,6 +2394,10 @@
<attr name="description" /> <attr name="description" />
</declare-styleable> </declare-styleable>
<declare-styleable name="ActionMenuItemView">
<attr name="minWidth" />
</declare-styleable>
<!-- =============================== --> <!-- =============================== -->
<!-- Widget package class attributes --> <!-- Widget package class attributes -->
<!-- =============================== --> <!-- =============================== -->

View File

@@ -189,4 +189,7 @@
<dimen name="default_app_widget_padding_top">8dp</dimen> <dimen name="default_app_widget_padding_top">8dp</dimen>
<dimen name="default_app_widget_padding_right">8dp</dimen> <dimen name="default_app_widget_padding_right">8dp</dimen>
<dimen name="default_app_widget_padding_bottom">8dp</dimen> <dimen name="default_app_widget_padding_bottom">8dp</dimen>
<!-- Minimum width for an action button in the menu area of an action bar -->
<dimen name="action_button_min_width">56dip</dimen>
</resources> </resources>

View File

@@ -1161,8 +1161,9 @@ please see styles_device_defaults.xml.
<item name="android:background">?android:attr/actionBarItemBackground</item> <item name="android:background">?android:attr/actionBarItemBackground</item>
<item name="android:paddingLeft">12dip</item> <item name="android:paddingLeft">12dip</item>
<item name="android:paddingRight">12dip</item> <item name="android:paddingRight">12dip</item>
<item name="android:minWidth">56dip</item> <item name="android:minWidth">@android:dimen/action_button_min_width</item>
<item name="android:minHeight">?android:attr/actionBarSize</item> <item name="android:minHeight">?android:attr/actionBarSize</item>
<item name="android:gravity">center</item>
</style> </style>
<style name="Widget.ActionButton.Overflow"> <style name="Widget.ActionButton.Overflow">
@@ -1359,7 +1360,7 @@ please see styles_device_defaults.xml.
<item name="android:textSize">12sp</item> <item name="android:textSize">12sp</item>
<item name="android:textStyle">bold</item> <item name="android:textStyle">bold</item>
<item name="android:textColor">?android:attr/actionMenuTextColor</item> <item name="android:textColor">?android:attr/actionMenuTextColor</item>
<item name="android:textAllCaps">true</item> <item name="android:textAllCaps">@android:bool/config_actionMenuItemAllCaps</item>
</style> </style>
<style name="TextAppearance.Holo.Widget.ActionMode"> <style name="TextAppearance.Holo.Widget.ActionMode">
@@ -1883,7 +1884,7 @@ please see styles_device_defaults.xml.
</style> </style>
<style name="Widget.Holo.ActionButton" parent="Widget.ActionButton"> <style name="Widget.Holo.ActionButton" parent="Widget.ActionButton">
<item name="android:minWidth">56dip</item> <item name="android:minWidth">@android:dimen/action_button_min_width</item>
<item name="android:gravity">center</item> <item name="android:gravity">center</item>
<item name="android:paddingLeft">12dip</item> <item name="android:paddingLeft">12dip</item>
<item name="android:paddingRight">12dip</item> <item name="android:paddingRight">12dip</item>