diff --git a/core/java/com/android/internal/view/menu/ActionMenuItemView.java b/core/java/com/android/internal/view/menu/ActionMenuItemView.java
index d5f69bab9fcd3..7218ddc090f08 100644
--- a/core/java/com/android/internal/view/menu/ActionMenuItemView.java
+++ b/core/java/com/android/internal/view/menu/ActionMenuItemView.java
@@ -66,7 +66,7 @@ public class ActionMenuItemView extends LinearLayout
mItemData = itemData;
setIcon(itemData.getIcon());
- setTitle(itemData.getTitle()); // Title only takes effect if there is no icon
+ setTitle(itemData.getTitleForItemView(this)); // Title only takes effect if there is no icon
setId(itemData.getItemId());
setVisibility(itemData.isVisible() ? View.VISIBLE : View.GONE);
@@ -91,7 +91,7 @@ public class ActionMenuItemView extends LinearLayout
}
public boolean prefersCondensedTitle() {
- return false;
+ return true;
}
public void setCheckable(boolean checkable) {
diff --git a/core/java/com/android/internal/view/menu/ActionMenuView.java b/core/java/com/android/internal/view/menu/ActionMenuView.java
index 463902fe53e9b..8e491e9fdd620 100644
--- a/core/java/com/android/internal/view/menu/ActionMenuView.java
+++ b/core/java/com/android/internal/view/menu/ActionMenuView.java
@@ -20,9 +20,9 @@ import android.content.res.Configuration;
import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.drawable.Drawable;
+import android.text.TextUtils;
import android.util.AttributeSet;
import android.view.Gravity;
-import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
@@ -186,10 +186,14 @@ public class ActionMenuView extends LinearLayout implements MenuBuilder.ItemInvo
boolean needsDivider = false;
for (int i = 0; i < itemCount; i++) {
+ final MenuItemImpl itemData = itemsToShow.get(i);
+ boolean hasDivider = false;
+
if (needsDivider) {
addView(makeDividerView(), makeDividerLayoutParams());
+ hasDivider = true;
}
- final MenuItemImpl itemData = itemsToShow.get(i);
+
View actionView = itemData.getActionView();
if (actionView != null) {
@@ -199,14 +203,22 @@ public class ActionMenuView extends LinearLayout implements MenuBuilder.ItemInvo
}
addView(actionView, makeActionViewLayoutParams(actionView));
} else {
- needsDivider = addItemView(i == 0 || !needsDivider,
- (ActionMenuItemView) itemData.getItemView(
- MenuBuilder.TYPE_ACTION_BUTTON, this));
+ ActionMenuItemView view = (ActionMenuItemView) itemData.getItemView(
+ MenuBuilder.TYPE_ACTION_BUTTON, this);
+ view.setItemInvoker(this);
+ if (i > 0 && !hasDivider && view.hasText() && itemData.getIcon() == null) {
+ addView(makeDividerView(), makeDividerLayoutParams());
+ }
+ addView(view);
+ needsDivider = view.hasText();
}
}
if (reserveOverflow) {
if (mMenu.getNonActionItems(true).size() > 0) {
+ if (itemCount > 0) {
+ addView(makeDividerView(), makeDividerLayoutParams());
+ }
OverflowMenuButton button = new OverflowMenuButton(mContext);
addView(button);
mOverflowButton = button;
diff --git a/core/java/com/android/internal/view/menu/ListMenuItemView.java b/core/java/com/android/internal/view/menu/ListMenuItemView.java
index e15587520625b..02584b618cf24 100644
--- a/core/java/com/android/internal/view/menu/ListMenuItemView.java
+++ b/core/java/com/android/internal/view/menu/ListMenuItemView.java
@@ -44,6 +44,7 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView
private Drawable mBackground;
private int mTextAppearance;
private Context mTextAppearanceContext;
+ private boolean mPreserveIconSpacing;
private int mMenuType;
@@ -57,6 +58,8 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView
mBackground = a.getDrawable(com.android.internal.R.styleable.MenuView_itemBackground);
mTextAppearance = a.getResourceId(com.android.internal.R.styleable.
MenuView_itemTextAppearance, -1);
+ mPreserveIconSpacing = a.getBoolean(
+ com.android.internal.R.styleable.MenuView_preserveIconSpacing, false);
mTextAppearanceContext = context;
a.recycle();
@@ -184,8 +187,8 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView
}
public void setIcon(Drawable icon) {
-
- if (!mItemData.shouldShowIcon(mMenuType)) {
+ final boolean showIcon = mItemData.shouldShowIcon(mMenuType);
+ if (!showIcon && !mPreserveIconSpacing) {
return;
}
@@ -197,8 +200,8 @@ public class ListMenuItemView extends LinearLayout implements MenuView.ItemView
insertIconView();
}
- if (icon != null) {
- mIconView.setImageDrawable(icon);
+ if (icon != null || mPreserveIconSpacing) {
+ mIconView.setImageDrawable(showIcon ? icon : null);
if (mIconView.getVisibility() != VISIBLE) {
mIconView.setVisibility(VISIBLE);
diff --git a/core/java/com/android/internal/view/menu/MenuItemImpl.java b/core/java/com/android/internal/view/menu/MenuItemImpl.java
index e1aa385fa051a..6fbae9446f30a 100644
--- a/core/java/com/android/internal/view/menu/MenuItemImpl.java
+++ b/core/java/com/android/internal/view/menu/MenuItemImpl.java
@@ -644,7 +644,6 @@ public final class MenuItemImpl implements MenuItem {
public boolean shouldShowIcon(int menuType) {
return menuType == MenuBuilder.TYPE_ICON ||
menuType == MenuBuilder.TYPE_ACTION_BUTTON ||
- menuType == MenuBuilder.TYPE_POPUP ||
mMenu.getOptionalIconsVisible();
}
diff --git a/core/java/com/android/internal/widget/ActionBarView.java b/core/java/com/android/internal/widget/ActionBarView.java
index 1d9276a39daf8..297dde78254b3 100644
--- a/core/java/com/android/internal/widget/ActionBarView.java
+++ b/core/java/com/android/internal/widget/ActionBarView.java
@@ -437,7 +437,7 @@ public class ActionBarView extends ViewGroup {
mListNavLayout = new LinearLayout(mContext, null,
com.android.internal.R.attr.actionBarTabBarStyle);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
- LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
+ LayoutParams.WRAP_CONTENT, LayoutParams.MATCH_PARENT);
params.gravity = Gravity.CENTER;
mListNavLayout.addView(mSpinner, params);
}
diff --git a/core/res/res/layout/action_menu_item_layout.xml b/core/res/res/layout/action_menu_item_layout.xml
index e502b1e6c03a2..e0018945d7b4f 100644
--- a/core/res/res/layout/action_menu_item_layout.xml
+++ b/core/res/res/layout/action_menu_item_layout.xml
@@ -20,10 +20,11 @@
android:layout_gravity="center"
android:addStatesFromChildren="true"
android:background="?attr/selectableItemBackground"
- android:minWidth="64dip"
- android:minHeight="?attr/actionBarSize"
+ android:gravity="center"
android:paddingLeft="12dip"
- android:paddingRight="12dip">
+ android:paddingRight="12dip"
+ android:minWidth="64dip"
+ android:minHeight="?attr/actionBarSize">
diff --git a/core/res/res/layout/popup_menu_item_layout.xml b/core/res/res/layout/popup_menu_item_layout.xml
index 2bbb4d06baf17..d22f74a055b7d 100644
--- a/core/res/res/layout/popup_menu_item_layout.xml
+++ b/core/res/res/layout/popup_menu_item_layout.xml
@@ -16,7 +16,8 @@
@@ -28,8 +29,6 @@
android:layout_weight="1"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
- android:layout_marginLeft="6dip"
- android:layout_marginRight="6dip"
android:duplicateParentState="true">
+
+
diff --git a/core/res/res/values/styles.xml b/core/res/res/values/styles.xml
index cf9c00b2547d9..1183915003d3e 100644
--- a/core/res/res/values/styles.xml
+++ b/core/res/res/values/styles.xml
@@ -1194,7 +1194,7 @@