Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit dbdaa9b4 authored by Chris Banes's avatar Chris Banes Committed by Android (Google) Code Review
Browse files

Merge "API council review feedback for ActionMenuView" into mnc-dev

parents 75a0ee08 a41b7897
Loading
Loading
Loading
Loading
+10 −14
Original line number Diff line number Diff line
@@ -222,6 +222,12 @@ package android {
    ctor public R.attr();
    field public static final int __reserved0 = 16844020; // 0x10104f4
    field public static final int __reserved1 = 16844019; // 0x10104f3
    field public static final int __reserved2 = 16843999; // 0x10104df
    field public static final int __reserved3 = 16844000; // 0x10104e0
    field public static final int __reserved4 = 16844001; // 0x10104e1
    field public static final int __reserved5 = 16844002; // 0x10104e2
    field public static final int __reserved6 = 16844003; // 0x10104e3
    field public static final int __reserved7 = 16844004; // 0x10104e4
    field public static final int absListViewStyle = 16842858; // 0x101006a
    field public static final int accessibilityEventTypes = 16843648; // 0x1010380
    field public static final int accessibilityFeedbackType = 16843650; // 0x1010382
@@ -661,8 +667,6 @@ package android {
    field public static final int hyphenationFrequency = 16844024; // 0x10104f8
    field public static final int icon = 16842754; // 0x1010002
    field public static final int iconPreview = 16843337; // 0x1010249
    field public static final int iconTint = 16843999; // 0x10104df
    field public static final int iconTintMode = 16844000; // 0x10104e0
    field public static final int iconifiedByDefault = 16843514; // 0x10102fa
    field public static final int id = 16842960; // 0x10100d0
    field public static final int ignoreGravity = 16843263; // 0x10101ff
@@ -874,8 +878,6 @@ package android {
    field public static final int navigationContentDescription = 16843969; // 0x10104c1
    field public static final int navigationIcon = 16843968; // 0x10104c0
    field public static final int navigationMode = 16843471; // 0x10102cf
    field public static final int navigationTint = 16844003; // 0x10104e3
    field public static final int navigationTintMode = 16844004; // 0x10104e4
    field public static final int negativeButtonText = 16843254; // 0x10101f6
    field public static final int nestedScrollingEnabled = 16843830; // 0x1010436
    field public static final int nextFocusDown = 16842980; // 0x10100e4
@@ -907,8 +909,6 @@ package android {
    field public static final int overScrollFooter = 16843459; // 0x10102c3
    field public static final int overScrollHeader = 16843458; // 0x10102c2
    field public static final int overScrollMode = 16843457; // 0x10102c1
    field public static final int overflowTint = 16844001; // 0x10104e1
    field public static final int overflowTintMode = 16844002; // 0x10104e2
    field public static final int overlapAnchor = 16843874; // 0x1010462
    field public static final int overridesImplicitlyEnabledSubtype = 16843682; // 0x10103a2
    field public static final int packageNames = 16843649; // 0x1010381
@@ -35492,8 +35492,6 @@ package android.view {
    method public abstract android.view.MenuItem setEnabled(boolean);
    method public abstract android.view.MenuItem setIcon(android.graphics.drawable.Drawable);
    method public abstract android.view.MenuItem setIcon(int);
    method public abstract android.view.MenuItem setIconTintList(android.content.res.ColorStateList);
    method public abstract android.view.MenuItem setIconTintMode(android.graphics.PorterDuff.Mode);
    method public abstract android.view.MenuItem setIntent(android.content.Intent);
    method public abstract android.view.MenuItem setNumericShortcut(char);
    method public abstract android.view.MenuItem setOnActionExpandListener(android.view.MenuItem.OnActionExpandListener);
@@ -39554,14 +39552,14 @@ package android.widget {
    ctor public ActionMenuView(android.content.Context, android.util.AttributeSet);
    method public void dismissPopupMenus();
    method public android.view.Menu getMenu();
    method public android.graphics.drawable.Drawable getOverflowIcon();
    method public int getPopupTheme();
    method public boolean hideOverflowMenu();
    method public boolean isOverflowMenuShowing();
    method public void onConfigurationChanged(android.content.res.Configuration);
    method public void onDetachedFromWindow();
    method public void setOnMenuItemClickListener(android.widget.ActionMenuView.OnMenuItemClickListener);
    method public void setOverflowTintList(android.content.res.ColorStateList);
    method public void setOverflowTintMode(android.graphics.PorterDuff.Mode);
    method public void setOverflowIcon(android.graphics.drawable.Drawable);
    method public void setPopupTheme(int);
    method public boolean showOverflowMenu();
  }
@@ -41851,6 +41849,7 @@ package android.widget {
    method public android.view.Menu getMenu();
    method public java.lang.CharSequence getNavigationContentDescription();
    method public android.graphics.drawable.Drawable getNavigationIcon();
    method public android.graphics.drawable.Drawable getOverflowIcon();
    method public int getPopupTheme();
    method public java.lang.CharSequence getSubtitle();
    method public java.lang.CharSequence getTitle();
@@ -41870,11 +41869,8 @@ package android.widget {
    method public void setNavigationIcon(int);
    method public void setNavigationIcon(android.graphics.drawable.Drawable);
    method public void setNavigationOnClickListener(android.view.View.OnClickListener);
    method public void setNavigationTintList(android.content.res.ColorStateList);
    method public void setNavigationTintMode(android.graphics.PorterDuff.Mode);
    method public void setOnMenuItemClickListener(android.widget.Toolbar.OnMenuItemClickListener);
    method public void setOverflowTintList(android.content.res.ColorStateList);
    method public void setOverflowTintMode(android.graphics.PorterDuff.Mode);
    method public void setOverflowIcon(android.graphics.drawable.Drawable);
    method public void setPopupTheme(int);
    method public void setSubtitle(int);
    method public void setSubtitle(java.lang.CharSequence);
+10 −14
Original line number Diff line number Diff line
@@ -297,6 +297,12 @@ package android {
    ctor public R.attr();
    field public static final int __reserved0 = 16844020; // 0x10104f4
    field public static final int __reserved1 = 16844019; // 0x10104f3
    field public static final int __reserved2 = 16843999; // 0x10104df
    field public static final int __reserved3 = 16844000; // 0x10104e0
    field public static final int __reserved4 = 16844001; // 0x10104e1
    field public static final int __reserved5 = 16844002; // 0x10104e2
    field public static final int __reserved6 = 16844003; // 0x10104e3
    field public static final int __reserved7 = 16844004; // 0x10104e4
    field public static final int absListViewStyle = 16842858; // 0x101006a
    field public static final int accessibilityEventTypes = 16843648; // 0x1010380
    field public static final int accessibilityFeedbackType = 16843650; // 0x1010382
@@ -736,8 +742,6 @@ package android {
    field public static final int hyphenationFrequency = 16844024; // 0x10104f8
    field public static final int icon = 16842754; // 0x1010002
    field public static final int iconPreview = 16843337; // 0x1010249
    field public static final int iconTint = 16843999; // 0x10104df
    field public static final int iconTintMode = 16844000; // 0x10104e0
    field public static final int iconifiedByDefault = 16843514; // 0x10102fa
    field public static final int id = 16842960; // 0x10100d0
    field public static final int ignoreGravity = 16843263; // 0x10101ff
@@ -949,8 +953,6 @@ package android {
    field public static final int navigationContentDescription = 16843969; // 0x10104c1
    field public static final int navigationIcon = 16843968; // 0x10104c0
    field public static final int navigationMode = 16843471; // 0x10102cf
    field public static final int navigationTint = 16844003; // 0x10104e3
    field public static final int navigationTintMode = 16844004; // 0x10104e4
    field public static final int negativeButtonText = 16843254; // 0x10101f6
    field public static final int nestedScrollingEnabled = 16843830; // 0x1010436
    field public static final int nextFocusDown = 16842980; // 0x10100e4
@@ -982,8 +984,6 @@ package android {
    field public static final int overScrollFooter = 16843459; // 0x10102c3
    field public static final int overScrollHeader = 16843458; // 0x10102c2
    field public static final int overScrollMode = 16843457; // 0x10102c1
    field public static final int overflowTint = 16844001; // 0x10104e1
    field public static final int overflowTintMode = 16844002; // 0x10104e2
    field public static final int overlapAnchor = 16843874; // 0x1010462
    field public static final int overridesImplicitlyEnabledSubtype = 16843682; // 0x10103a2
    field public static final int packageNames = 16843649; // 0x1010381
@@ -37772,8 +37772,6 @@ package android.view {
    method public abstract android.view.MenuItem setEnabled(boolean);
    method public abstract android.view.MenuItem setIcon(android.graphics.drawable.Drawable);
    method public abstract android.view.MenuItem setIcon(int);
    method public abstract android.view.MenuItem setIconTintList(android.content.res.ColorStateList);
    method public abstract android.view.MenuItem setIconTintMode(android.graphics.PorterDuff.Mode);
    method public abstract android.view.MenuItem setIntent(android.content.Intent);
    method public abstract android.view.MenuItem setNumericShortcut(char);
    method public abstract android.view.MenuItem setOnActionExpandListener(android.view.MenuItem.OnActionExpandListener);
@@ -42148,14 +42146,14 @@ package android.widget {
    ctor public ActionMenuView(android.content.Context, android.util.AttributeSet);
    method public void dismissPopupMenus();
    method public android.view.Menu getMenu();
    method public android.graphics.drawable.Drawable getOverflowIcon();
    method public int getPopupTheme();
    method public boolean hideOverflowMenu();
    method public boolean isOverflowMenuShowing();
    method public void onConfigurationChanged(android.content.res.Configuration);
    method public void onDetachedFromWindow();
    method public void setOnMenuItemClickListener(android.widget.ActionMenuView.OnMenuItemClickListener);
    method public void setOverflowTintList(android.content.res.ColorStateList);
    method public void setOverflowTintMode(android.graphics.PorterDuff.Mode);
    method public void setOverflowIcon(android.graphics.drawable.Drawable);
    method public void setPopupTheme(int);
    method public boolean showOverflowMenu();
  }
@@ -44445,6 +44443,7 @@ package android.widget {
    method public android.view.Menu getMenu();
    method public java.lang.CharSequence getNavigationContentDescription();
    method public android.graphics.drawable.Drawable getNavigationIcon();
    method public android.graphics.drawable.Drawable getOverflowIcon();
    method public int getPopupTheme();
    method public java.lang.CharSequence getSubtitle();
    method public java.lang.CharSequence getTitle();
@@ -44464,11 +44463,8 @@ package android.widget {
    method public void setNavigationIcon(int);
    method public void setNavigationIcon(android.graphics.drawable.Drawable);
    method public void setNavigationOnClickListener(android.view.View.OnClickListener);
    method public void setNavigationTintList(android.content.res.ColorStateList);
    method public void setNavigationTintMode(android.graphics.PorterDuff.Mode);
    method public void setOnMenuItemClickListener(android.widget.Toolbar.OnMenuItemClickListener);
    method public void setOverflowTintList(android.content.res.ColorStateList);
    method public void setOverflowTintMode(android.graphics.PorterDuff.Mode);
    method public void setOverflowIcon(android.graphics.drawable.Drawable);
    method public void setPopupTheme(int);
    method public void setSubtitle(int);
    method public void setSubtitle(java.lang.CharSequence);
+0 −32
Original line number Diff line number Diff line
@@ -25,11 +25,8 @@ import android.annotation.MenuRes;
import android.app.Activity;
import android.content.Context;
import android.content.ContextWrapper;
import android.content.res.ColorStateList;
import android.content.res.TypedArray;
import android.content.res.XmlResourceParser;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.util.Log;
import android.util.Xml;
@@ -337,11 +334,6 @@ public class MenuInflater {
        
        private ActionProvider itemActionProvider;

        private ColorStateList itemIconTintList;
        private boolean itemIconTintListSet;
        private PorterDuff.Mode itemIconTintMode;
        private boolean itemIconTintModeSet;

        private static final int defaultGroupId = NO_ID;
        private static final int defaultItemId = NO_ID;
        private static final int defaultItemCategory = 0;
@@ -432,23 +424,6 @@ public class MenuInflater {
                itemActionProvider = null;
            }

            if (a.hasValueOrEmpty(com.android.internal.R.styleable.MenuItem_iconTint)) {
                itemIconTintList = a.getColorStateList(
                        com.android.internal.R.styleable.MenuItem_iconTint);
                itemIconTintListSet = true;
            } else {
                itemIconTintList = null;
                itemIconTintListSet = false;
            }
            if (a.hasValueOrEmpty(com.android.internal.R.styleable.MenuItem_iconTintMode)) {
                itemIconTintMode = Drawable.parseTintMode(
                        a.getInt(com.android.internal.R.styleable.MenuItem_iconTintMode, -1), null);
                itemIconTintModeSet = true;
            } else {
                itemIconTintMode = null;
                itemIconTintModeSet = false;
            }

            a.recycle();

            itemAdded = false;
@@ -511,13 +486,6 @@ public class MenuInflater {
            if (itemActionProvider != null) {
                item.setActionProvider(itemActionProvider);
            }

            if (itemIconTintListSet) {
                item.setIconTintList(itemIconTintList);
            }
            if (itemIconTintModeSet) {
                item.setIconTintMode(itemIconTintMode);
            }
        }

        public MenuItem addItem() {
+0 −24
Original line number Diff line number Diff line
@@ -21,8 +21,6 @@ import android.annotation.LayoutRes;
import android.annotation.StringRes;
import android.app.Activity;
import android.content.Intent;
import android.content.res.ColorStateList;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.View.OnCreateContextMenuListener;
@@ -601,26 +599,4 @@ public interface MenuItem {
     * @return This menu item instance for call chaining
     */
    public MenuItem setOnActionExpandListener(OnActionExpandListener listener);

    /**
     * Applies a tint to the icon drawable. Does not modify the current tint
     * mode, which is {@link PorterDuff.Mode#SRC_IN} by default.
     * <p>
     * Subsequent calls to {@link android.view.MenuItem#setIcon(android.graphics.drawable.Drawable)}
     * will automatically mutate the drawable and apply the specified tint and tint mode.
     *
     * @param tint the tint to apply, may be {@code null} to clear tint
     * @return This menu item instance for call chaining
     */
    public MenuItem setIconTintList(ColorStateList tint);

    /**
     * Specifies the blending mode used to apply the tint specified by {@link
     * #setIconTintList(ColorStateList)} to the icon drawable. The default mode is {@link
     * PorterDuff.Mode#SRC_IN}.
     *
     * @param tintMode the blending mode used to apply the tint, may be {@code null} to clear tint
     * @return This menu item instance for call chaining
     */
    public MenuItem setIconTintMode(PorterDuff.Mode tintMode);
}
+25 −48
Original line number Diff line number Diff line
@@ -21,10 +21,8 @@ import android.animation.AnimatorListenerAdapter;
import android.animation.ObjectAnimator;
import android.animation.PropertyValuesHolder;
import android.content.Context;
import android.content.res.ColorStateList;
import android.content.res.Configuration;
import android.content.res.Resources;
import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.os.Parcel;
import android.os.Parcelable;
@@ -64,6 +62,8 @@ public class ActionMenuPresenter extends BaseMenuPresenter
    private static final boolean ACTIONBAR_ANIMATIONS_ENABLED = false;

    private OverflowMenuButton mOverflowButton;
    private Drawable mPendingOverflowIcon;
    private boolean mPendingOverflowIconSet;
    private boolean mReserveOverflow;
    private boolean mReserveOverflowSet;
    private int mWidthLimit;
@@ -85,8 +85,6 @@ public class ActionMenuPresenter extends BaseMenuPresenter
    private OpenOverflowRunnable mPostedOpenRunnable;
    private ActionMenuPopupCallback mPopupCallback;

    private TintInfo mOverflowTintInfo;

    final PopupPresenterCallback mPopupPresenterCallback = new PopupPresenterCallback();
    int mOpenSubMenuId;

@@ -154,9 +152,13 @@ public class ActionMenuPresenter extends BaseMenuPresenter
        if (mReserveOverflow) {
            if (mOverflowButton == null) {
                mOverflowButton = new OverflowMenuButton(mSystemContext);
                if (mPendingOverflowIconSet) {
                    mOverflowButton.setImageDrawable(mPendingOverflowIcon);
                    mPendingOverflowIcon = null;
                    mPendingOverflowIconSet = false;
                }
                final int spec = MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED);
                mOverflowButton.measure(spec, spec);
                applyOverflowTint();
            }
            width -= mOverflowButton.getMeasuredWidth();
        } else {
@@ -198,6 +200,24 @@ public class ActionMenuPresenter extends BaseMenuPresenter
        mExpandedActionViewsExclusive = isExclusive;
    }

    public void setOverflowIcon(Drawable icon) {
        if (mOverflowButton != null) {
            mOverflowButton.setImageDrawable(icon);
        } else {
            mPendingOverflowIconSet = true;
            mPendingOverflowIcon = icon;
        }
    }

    public Drawable getOverflowIcon() {
        if (mOverflowButton != null) {
            return mOverflowButton.getDrawable();
        } else if (mPendingOverflowIconSet) {
            return mPendingOverflowIcon;
        }
        return null;
    }

    @Override
    public MenuView getMenuView(ViewGroup root) {
        MenuView oldMenuView = mMenuView;
@@ -449,7 +469,6 @@ public class ActionMenuPresenter extends BaseMenuPresenter
        if (hasOverflow) {
            if (mOverflowButton == null) {
                mOverflowButton = new OverflowMenuButton(mSystemContext);
                applyOverflowTint();
            }
            ViewGroup parent = (ViewGroup) mOverflowButton.getParent();
            if (parent != mMenuView) {
@@ -764,40 +783,6 @@ public class ActionMenuPresenter extends BaseMenuPresenter
        }
    }

    public void setOverflowTintList(ColorStateList tint) {
        if (mOverflowTintInfo == null) {
            mOverflowTintInfo = new TintInfo();
        }
        mOverflowTintInfo.mTintList = tint;
        mOverflowTintInfo.mHasTintList = true;

        applyOverflowTint();
    }

    public void setOverflowTintMode(PorterDuff.Mode tintMode) {
        if (mOverflowTintInfo == null) {
            mOverflowTintInfo = new TintInfo();
        }
        mOverflowTintInfo.mTintMode = tintMode;
        mOverflowTintInfo.mHasTintMode = true;

        applyOverflowTint();
    }

    private void applyOverflowTint() {
        final TintInfo tintInfo = mOverflowTintInfo;
        if (tintInfo != null && (tintInfo.mHasTintList || tintInfo.mHasTintMode)) {
            if (mOverflowButton != null) {
                if (tintInfo.mHasTintList) {
                    mOverflowButton.setImageTintList(tintInfo.mTintList);
                }
                if (tintInfo.mHasTintMode) {
                    mOverflowButton.setImageTintMode(tintInfo.mTintMode);
                }
            }
        }
    }

    private static class SavedState implements Parcelable {
        public int openSubMenuId;

@@ -1023,13 +1008,6 @@ public class ActionMenuPresenter extends BaseMenuPresenter
        }
    }

    private static class TintInfo {
        ColorStateList mTintList;
        PorterDuff.Mode mTintMode;
        boolean mHasTintMode;
        boolean mHasTintList;
    }

    /**
     * This class holds layout information for a menu item. This is used to determine
     * pre- and post-layout information about menu items, which will then be used to
@@ -1077,5 +1055,4 @@ public class ActionMenuPresenter extends BaseMenuPresenter
            this.animType = animType;
        }
    }

}
Loading