diff --git a/api/current.txt b/api/current.txt index 803d2fdb77942..55b14db154788 100644 --- a/api/current.txt +++ b/api/current.txt @@ -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); diff --git a/api/system-current.txt b/api/system-current.txt index 010b4b1915dcd..67bcdf51098c6 100644 --- a/api/system-current.txt +++ b/api/system-current.txt @@ -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); diff --git a/core/java/android/view/MenuInflater.java b/core/java/android/view/MenuInflater.java index dc8cadf8abdbd..1c67ba74184e0 100644 --- a/core/java/android/view/MenuInflater.java +++ b/core/java/android/view/MenuInflater.java @@ -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() { diff --git a/core/java/android/view/MenuItem.java b/core/java/android/view/MenuItem.java index 29480077f8fe9..9e8b97eade6b1 100644 --- a/core/java/android/view/MenuItem.java +++ b/core/java/android/view/MenuItem.java @@ -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. - *
- * 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); } diff --git a/core/java/android/widget/ActionMenuPresenter.java b/core/java/android/widget/ActionMenuPresenter.java index f08141ce68342..a5696eefa1db4 100644 --- a/core/java/android/widget/ActionMenuPresenter.java +++ b/core/java/android/widget/ActionMenuPresenter.java @@ -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; } } - } diff --git a/core/java/android/widget/ActionMenuView.java b/core/java/android/widget/ActionMenuView.java index 278a8fbbfc0ad..1f02c3b33e031 100644 --- a/core/java/android/widget/ActionMenuView.java +++ b/core/java/android/widget/ActionMenuView.java @@ -16,11 +16,11 @@ package android.widget; import android.annotation.NonNull; +import android.annotation.Nullable; import android.annotation.StyleRes; import android.content.Context; -import android.content.res.ColorStateList; import android.content.res.Configuration; -import android.graphics.PorterDuff; +import android.graphics.drawable.Drawable; import android.util.AttributeSet; import android.view.ContextThemeWrapper; import android.view.Gravity; @@ -541,6 +541,27 @@ public class ActionMenuView extends LinearLayout implements MenuBuilder.ItemInvo dismissPopupMenus(); } + /** + * Set the icon to use for the overflow button. + * + * @param icon Drawable to set, may be null to clear the icon + */ + public void setOverflowIcon(@Nullable Drawable icon) { + getMenu(); + mPresenter.setOverflowIcon(icon); + } + + /** + * Return the current drawable used as the overflow icon. + * + * @return The overflow icon drawable + */ + @Nullable + public Drawable getOverflowIcon() { + getMenu(); + return mPresenter.getOverflowIcon(); + } + /** @hide */ public boolean isOverflowReserved() { return mReserveOverflow; @@ -551,31 +572,6 @@ public class ActionMenuView extends LinearLayout implements MenuBuilder.ItemInvo mReserveOverflow = reserveOverflow; } - /** - * Applies a tint to the overflow drawable. Does not modify the current tint - * mode, which is {@link PorterDuff.Mode#SRC_IN} by default. - * - * @param tint the tint to apply, may be {@code null} to clear tint - */ - public void setOverflowTintList(ColorStateList tint) { - if (mPresenter != null) { - mPresenter.setOverflowTintList(tint); - } - } - - /** - * Specifies the blending mode used to apply the tint specified by {@link - * #setOverflowTintList(ColorStateList)} to the overflow 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 - */ - public void setOverflowTintMode(PorterDuff.Mode tintMode) { - if (mPresenter != null) { - mPresenter.setOverflowTintMode(tintMode); - } - } - @Override protected LayoutParams generateDefaultLayoutParams() { LayoutParams params = new LayoutParams(LayoutParams.WRAP_CONTENT, diff --git a/core/java/android/widget/Toolbar.java b/core/java/android/widget/Toolbar.java index 62d948d8afb64..8ace0f3a0e18e 100644 --- a/core/java/android/widget/Toolbar.java +++ b/core/java/android/widget/Toolbar.java @@ -25,9 +25,8 @@ import android.annotation.StringRes; import android.annotation.StyleRes; import android.app.ActionBar; import android.content.Context; -import android.content.res.ColorStateList; import android.content.res.TypedArray; -import android.graphics.PorterDuff; +import android.graphics.RectF; import android.graphics.drawable.Drawable; import android.os.Parcel; import android.os.Parcelable; @@ -110,9 +109,6 @@ public class Toolbar extends ViewGroup { private ImageButton mNavButtonView; private ImageView mLogoView; - private TintInfo mOverflowTintInfo; - private TintInfo mNavTintInfo; - private Drawable mCollapseIcon; private CharSequence mCollapseDescription; private ImageButton mCollapseButtonView; @@ -275,21 +271,6 @@ public class Toolbar extends ViewGroup { if (!TextUtils.isEmpty(navDesc)) { setNavigationContentDescription(navDesc); } - - if (a.hasValue(R.styleable.Toolbar_overflowTint)) { - setOverflowTintList(a.getColorStateList(R.styleable.Toolbar_overflowTint)); - } - if (a.hasValue(R.styleable.Toolbar_overflowTintMode)) { - setOverflowTintMode(Drawable.parseTintMode( - a.getInt(R.styleable.Toolbar_overflowTintMode, -1), null)); - } - if (a.hasValue(R.styleable.Toolbar_navigationTint)) { - setNavigationTintList(a.getColorStateList(R.styleable.Toolbar_navigationTint)); - } - if (a.hasValue(R.styleable.Toolbar_navigationTintMode)) { - setNavigationTintMode(Drawable.parseTintMode( - a.getInt(R.styleable.Toolbar_navigationTintMode, -1), null)); - } a.recycle(); } @@ -829,91 +810,6 @@ public class Toolbar extends ViewGroup { mNavButtonView.setOnClickListener(listener); } - /** - * Applies a tint to the icon drawable. Does not modify the current tint - * mode, which is {@link PorterDuff.Mode#SRC_IN} by default. - *
- * Subsequent calls to {@link #setNavigationIcon(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
- *
- * @attr ref android.R.styleable#Toolbar_navigationTint
- */
- public void setNavigationTintList(ColorStateList tint) {
- if (mNavTintInfo == null) {
- mNavTintInfo = new TintInfo();
- }
- mNavTintInfo.mTintList = tint;
- mNavTintInfo.mHasTintList = true;
-
- applyNavigationTint();
- }
-
- /**
- * Specifies the blending mode used to apply the tint specified by {@link
- * #setNavigationTintList(ColorStateList)} to the navigation 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
- *
- * @attr ref android.R.styleable#Toolbar_navigationTintMode
- */
- public void setNavigationTintMode(PorterDuff.Mode tintMode) {
- if (mNavTintInfo == null) {
- mNavTintInfo = new TintInfo();
- }
- mNavTintInfo.mTintMode = tintMode;
- mNavTintInfo.mHasTintMode = true;
-
- applyNavigationTint();
- }
-
- /**
- * Applies a tint to the overflow drawable. Does not modify the current tint
- * mode, which is {@link PorterDuff.Mode#SRC_IN} by default.
- *
- * @param tint the tint to apply, may be {@code null} to clear tint
- *
- * @attr ref android.R.styleable#Toolbar_overflowTint
- */
- public void setOverflowTintList(ColorStateList tint) {
- if (mMenuView != null) {
- // If the menu view is available, directly set the tint
- mMenuView.setOverflowTintList(tint);
- } else {
- // Otherwise we will record the value
- if (mOverflowTintInfo == null) {
- mOverflowTintInfo = new TintInfo();
- }
- mOverflowTintInfo.mTintList = tint;
- mOverflowTintInfo.mHasTintList = true;
- }
- }
-
- /**
- * Specifies the blending mode used to apply the tint specified by {@link
- * #setOverflowTintList(ColorStateList)} to the overflow 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
- *
- * @attr ref android.R.styleable#Toolbar_overflowTintMode
- */
- public void setOverflowTintMode(PorterDuff.Mode tintMode) {
- if (mMenuView != null) {
- // If the menu view is available, directly set the tint mode
- mMenuView.setOverflowTintMode(tintMode);
- } else {
- // Otherwise we will record the value
- if (mOverflowTintInfo == null) {
- mOverflowTintInfo = new TintInfo();
- }
- mOverflowTintInfo.mTintMode = tintMode;
- mOverflowTintInfo.mHasTintMode = true;
- }
- }
-
/**
* Return the Menu shown in the toolbar.
*
@@ -927,6 +823,27 @@ public class Toolbar extends ViewGroup {
return mMenuView.getMenu();
}
+ /**
+ * Set the icon to use for the overflow button.
+ *
+ * @param icon Drawable to set, may be null to clear the icon
+ */
+ public void setOverflowIcon(@Nullable Drawable icon) {
+ ensureMenu();
+ mMenuView.setOverflowIcon(icon);
+ }
+
+ /**
+ * Return the current drawable used as the overflow icon.
+ *
+ * @return The overflow icon drawable
+ */
+ @Nullable
+ public Drawable getOverflowIcon() {
+ ensureMenu();
+ return mMenuView.getOverflowIcon();
+ }
+
private void ensureMenu() {
ensureMenuView();
if (mMenuView.peekMenu() == null) {
@@ -950,17 +867,6 @@ public class Toolbar extends ViewGroup {
lp.gravity = Gravity.END | (mButtonGravity & Gravity.VERTICAL_GRAVITY_MASK);
mMenuView.setLayoutParams(lp);
addSystemView(mMenuView);
-
- if (mOverflowTintInfo != null) {
- // If we have tint info for the overflow, set it on the menu view now
- if (mOverflowTintInfo.mHasTintList) {
- mMenuView.setOverflowTintList(mOverflowTintInfo.mTintList);
- }
- if (mOverflowTintInfo.mHasTintMode) {
- mMenuView.setOverflowTintMode(mOverflowTintInfo.mTintMode);
- }
- mOverflowTintInfo = null;
- }
}
}
@@ -1114,7 +1020,6 @@ public class Toolbar extends ViewGroup {
final LayoutParams lp = generateDefaultLayoutParams();
lp.gravity = Gravity.START | (mButtonGravity & Gravity.VERTICAL_GRAVITY_MASK);
mNavButtonView.setLayoutParams(lp);
- applyNavigationTint();
}
}
@@ -1133,7 +1038,6 @@ public class Toolbar extends ViewGroup {
collapseActionView();
}
});
- applyNavigationTint();
}
}
@@ -1885,30 +1789,6 @@ public class Toolbar extends ViewGroup {
return mPopupContext;
}
- private void applyNavigationTint() {
- final TintInfo tintInfo = mNavTintInfo;
- if (tintInfo != null && (tintInfo.mHasTintList || tintInfo.mHasTintMode)) {
- if (mNavButtonView != null) {
- if (tintInfo.mHasTintList) {
- mNavButtonView.setImageTintList(tintInfo.mTintList);
- }
- if (tintInfo.mHasTintMode) {
- mNavButtonView.setImageTintMode(tintInfo.mTintMode);
- }
- }
-
- if (mCollapseButtonView != null) {
- // We will use the same tint for the collapse button
- if (tintInfo.mHasTintList) {
- mCollapseButtonView.setImageTintList(tintInfo.mTintList);
- }
- if (tintInfo.mHasTintMode) {
- mCollapseButtonView.setImageTintMode(tintInfo.mTintMode);
- }
- }
- }
- }
-
/**
* Interface responsible for receiving menu item click events if the items themselves
* do not have individual item click listeners.
@@ -2136,11 +2016,4 @@ public class Toolbar extends ViewGroup {
public void onRestoreInstanceState(Parcelable state) {
}
}
-
- private static class TintInfo {
- ColorStateList mTintList;
- PorterDuff.Mode mTintMode;
- boolean mHasTintMode;
- boolean mHasTintList;
- }
}
diff --git a/core/java/com/android/internal/view/menu/ActionMenuItem.java b/core/java/com/android/internal/view/menu/ActionMenuItem.java
index 00af401d74c97..ed676bb703e9d 100644
--- a/core/java/com/android/internal/view/menu/ActionMenuItem.java
+++ b/core/java/com/android/internal/view/menu/ActionMenuItem.java
@@ -18,8 +18,6 @@ package com.android.internal.view.menu;
import android.content.Context;
import android.content.Intent;
-import android.content.res.ColorStateList;
-import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.view.ActionProvider;
import android.view.ContextMenu.ContextMenuInfo;
@@ -44,7 +42,6 @@ public class ActionMenuItem implements MenuItem {
private Drawable mIconDrawable;
private int mIconResId = NO_ICON;
- private TintInfo mIconTintInfo;
private Context mContext;
@@ -161,14 +158,12 @@ public class ActionMenuItem implements MenuItem {
public MenuItem setIcon(Drawable icon) {
mIconDrawable = icon;
mIconResId = NO_ICON;
- applyIconTint();
return this;
}
public MenuItem setIcon(int iconRes) {
mIconResId = iconRes;
mIconDrawable = mContext.getDrawable(iconRes);
- applyIconTint();
return this;
}
@@ -279,48 +274,4 @@ public class ActionMenuItem implements MenuItem {
// No need to save the listener; ActionMenuItem does not support collapsing items.
return this;
}
-
- @Override
- public MenuItem setIconTintList(ColorStateList tintList) {
- if (mIconTintInfo == null) {
- mIconTintInfo = new TintInfo();
- }
- mIconTintInfo.mTintList = tintList;
- mIconTintInfo.mHasTintList = true;
- applyIconTint();
- return this;
- }
-
- @Override
- public MenuItem setIconTintMode(PorterDuff.Mode tintMode) {
- if (mIconTintInfo == null) {
- mIconTintInfo = new TintInfo();
- }
- mIconTintInfo.mTintMode = tintMode;
- mIconTintInfo.mHasTintMode = true;
- applyIconTint();
- return this;
- }
-
- private void applyIconTint() {
- final TintInfo tintInfo = mIconTintInfo;
- if (mIconDrawable != null && tintInfo != null) {
- if (tintInfo.mHasTintList || tintInfo.mHasTintMode) {
- mIconDrawable = mIconDrawable.mutate();
- if (tintInfo.mHasTintList) {
- mIconDrawable.setTintList(tintInfo.mTintList);
- }
- if (tintInfo.mHasTintMode) {
- mIconDrawable.setTintMode(tintInfo.mTintMode);
- }
- }
- }
- }
-
- private static class TintInfo {
- ColorStateList mTintList;
- PorterDuff.Mode mTintMode;
- boolean mHasTintMode;
- boolean mHasTintList;
- }
}
diff --git a/core/java/com/android/internal/view/menu/MenuItemImpl.java b/core/java/com/android/internal/view/menu/MenuItemImpl.java
index ef4e546ca18d6..3b1f20d86503a 100644
--- a/core/java/com/android/internal/view/menu/MenuItemImpl.java
+++ b/core/java/com/android/internal/view/menu/MenuItemImpl.java
@@ -21,8 +21,6 @@ import com.android.internal.view.menu.MenuView.ItemView;
import android.content.ActivityNotFoundException;
import android.content.Context;
import android.content.Intent;
-import android.content.res.ColorStateList;
-import android.graphics.PorterDuff;
import android.graphics.drawable.Drawable;
import android.util.Log;
import android.view.ActionProvider;
@@ -62,11 +60,6 @@ public final class MenuItemImpl implements MenuItem {
* needed).
*/
private int mIconResId = NO_ICON;
-
- /**
- * Tint info for the icon
- */
- private TintInfo mIconTintInfo;
/** The menu to which this item belongs */
private MenuBuilder mMenu;
@@ -392,10 +385,10 @@ public final class MenuItemImpl implements MenuItem {
}
if (mIconResId != NO_ICON) {
- mIconDrawable = mMenu.getContext().getDrawable(mIconResId);
+ Drawable icon = mMenu.getContext().getDrawable(mIconResId);
mIconResId = NO_ICON;
- applyIconTint();
- return mIconDrawable;
+ mIconDrawable = icon;
+ return icon;
}
return null;
@@ -404,7 +397,6 @@ public final class MenuItemImpl implements MenuItem {
public MenuItem setIcon(Drawable icon) {
mIconResId = NO_ICON;
mIconDrawable = icon;
- applyIconTint();
mMenu.onItemsChanged(false);
return this;
@@ -678,48 +670,4 @@ public final class MenuItemImpl implements MenuItem {
public boolean isActionViewExpanded() {
return mIsActionViewExpanded;
}
-
- @Override
- public MenuItem setIconTintList(ColorStateList tintList) {
- if (mIconTintInfo == null) {
- mIconTintInfo = new TintInfo();
- }
- mIconTintInfo.mTintList = tintList;
- mIconTintInfo.mHasTintList = true;
- applyIconTint();
- return this;
- }
-
- @Override
- public MenuItem setIconTintMode(PorterDuff.Mode tintMode) {
- if (mIconTintInfo == null) {
- mIconTintInfo = new TintInfo();
- }
- mIconTintInfo.mTintMode = tintMode;
- mIconTintInfo.mHasTintMode = true;
- applyIconTint();
- return this;
- }
-
- private void applyIconTint() {
- final TintInfo tintInfo = mIconTintInfo;
- if (mIconDrawable != null && tintInfo != null) {
- if (tintInfo.mHasTintList || tintInfo.mHasTintMode) {
- mIconDrawable = mIconDrawable.mutate();
- if (tintInfo.mHasTintList) {
- mIconDrawable.setTintList(tintInfo.mTintList);
- }
- if (tintInfo.mHasTintMode) {
- mIconDrawable.setTintMode(tintInfo.mTintMode);
- }
- }
- }
- }
-
- private static class TintInfo {
- ColorStateList mTintList;
- PorterDuff.Mode mTintMode;
- boolean mHasTintMode;
- boolean mHasTintList;
- }
}
diff --git a/core/res/res/values/attrs.xml b/core/res/res/values/attrs.xml
index bb442eb2cf925..52e2cf0c5999c 100644
--- a/core/res/res/values/attrs.xml
+++ b/core/res/res/values/attrs.xml
@@ -6651,33 +6651,6 @@ i
for more info. -->