Loading core/java/com/android/internal/widget/ActionBarView.java +26 −3 Original line number Diff line number Diff line Loading @@ -1316,6 +1316,11 @@ public class ActionBarView extends AbsActionBarView implements DecorToolbar { mHomeLayout.setUpIndicator(indicator); } @Override public void setDefaultNavigationIcon(Drawable icon) { mHomeLayout.setDefaultUpIndicator(icon); } public void setNavigationIcon(int resId) { mHomeLayout.setUpIndicator(resId); } Loading Loading @@ -1380,6 +1385,7 @@ public class ActionBarView extends AbsActionBarView implements DecorToolbar { private int mStartOffset; private int mUpIndicatorRes; private Drawable mDefaultUpIndicator; private Drawable mUpIndicator; private static final long DEFAULT_TRANSITION_DURATION = 150; Loading Loading @@ -1409,13 +1415,30 @@ public class ActionBarView extends AbsActionBarView implements DecorToolbar { } public void setUpIndicator(Drawable d) { mUpView.setImageDrawable(d != null ? d : mDefaultUpIndicator); mUpIndicator = d; mUpIndicatorRes = 0; updateUpIndicator(); } public void setDefaultUpIndicator(Drawable d) { mDefaultUpIndicator = d; updateUpIndicator(); } public void setUpIndicator(int resId) { mUpIndicatorRes = resId; mUpView.setImageDrawable(resId != 0 ? getContext().getDrawable(resId) : null); mUpIndicator = null; updateUpIndicator(); } private void updateUpIndicator() { if (mUpIndicator != null) { mUpView.setImageDrawable(mUpIndicator); } else if (mUpIndicatorRes != 0) { mUpView.setImageDrawable(getContext().getDrawable(mUpIndicatorRes)); } else { mUpView.setImageDrawable(mDefaultUpIndicator); } } @Override Loading @@ -1423,7 +1446,7 @@ public class ActionBarView extends AbsActionBarView implements DecorToolbar { super.onConfigurationChanged(newConfig); if (mUpIndicatorRes != 0) { // Reload for config change setUpIndicator(mUpIndicatorRes); updateUpIndicator(); } } Loading core/java/com/android/internal/widget/DecorToolbar.java +1 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,7 @@ public interface DecorToolbar { void setNavigationContentDescription(CharSequence description); void setNavigationContentDescription(int resId); void setDefaultNavigationContentDescription(int defaultNavigationContentDescription); void setDefaultNavigationIcon(Drawable icon); void saveHierarchyState(SparseArray<Parcelable> toolbarStates); void restoreHierarchyState(SparseArray<Parcelable> toolbarStates); } core/java/com/android/internal/widget/ToolbarWidgetWrapper.java +26 −17 Original line number Diff line number Diff line Loading @@ -84,6 +84,7 @@ public class ToolbarWidgetWrapper implements DecorToolbar { private int mNavigationMode = ActionBar.NAVIGATION_MODE_STANDARD; private int mDefaultNavigationContentDescription = 0; private Drawable mDefaultNavigationIcon; public ToolbarWidgetWrapper(Toolbar toolbar, boolean style) { this(toolbar, style, R.string.action_bar_up_description); Loading @@ -96,11 +97,10 @@ public class ToolbarWidgetWrapper implements DecorToolbar { mTitle = toolbar.getTitle(); mSubtitle = toolbar.getSubtitle(); mTitleSet = mTitle != null; if (style) { final TypedArray a = toolbar.getContext().obtainStyledAttributes(null, R.styleable.ActionBar, R.attr.actionBarStyle, 0); mDefaultNavigationIcon = a.getDrawable(R.styleable.ActionBar_homeAsUpIndicator); if (style) { final CharSequence title = a.getText(R.styleable.ActionBar_title); if (!TextUtils.isEmpty(title)) { setTitle(title); Loading @@ -120,12 +120,9 @@ public class ToolbarWidgetWrapper implements DecorToolbar { if (icon != null) { setIcon(icon); } final Drawable navIcon = a.getDrawable(R.styleable.ActionBar_homeAsUpIndicator); if (navIcon != null) { setNavigationIcon(navIcon); if (mDefaultNavigationIcon != null) { setNavigationIcon(mDefaultNavigationIcon); } setDisplayOptions(a.getInt(R.styleable.ActionBar_displayOptions, 0)); final int customNavId = a.getResourceId( Loading Loading @@ -167,11 +164,10 @@ public class ToolbarWidgetWrapper implements DecorToolbar { if (popupTheme != 0) { mToolbar.setPopupTheme(popupTheme); } a.recycle(); } else { mDisplayOpts = detectDisplayOptions(); } a.recycle(); setDefaultNavigationContentDescription(defaultNavigationContentDescription); mHomeDescription = mToolbar.getNavigationContentDescription(); Loading Loading @@ -204,6 +200,7 @@ public class ToolbarWidgetWrapper implements DecorToolbar { ActionBar.DISPLAY_USE_LOGO; if (mToolbar.getNavigationIcon() != null) { opts |= ActionBar.DISPLAY_HOME_AS_UP; mDefaultNavigationIcon = mToolbar.getNavigationIcon(); } return opts; } Loading Loading @@ -410,11 +407,9 @@ public class ToolbarWidgetWrapper implements DecorToolbar { if (changed != 0) { if ((changed & ActionBar.DISPLAY_HOME_AS_UP) != 0) { if ((newOpts & ActionBar.DISPLAY_HOME_AS_UP) != 0) { mToolbar.setNavigationIcon(mNavIcon); updateHomeAccessibility(); } else { mToolbar.setNavigationIcon(null); } updateNavigationIcon(); } if ((changed & AFFECTS_LOGO_MASK) != 0) { Loading Loading @@ -607,9 +602,7 @@ public class ToolbarWidgetWrapper implements DecorToolbar { @Override public void setNavigationIcon(Drawable icon) { mNavIcon = icon; if ((mDisplayOpts & ActionBar.DISPLAY_HOME_AS_UP) != 0) { mToolbar.setNavigationIcon(icon); } updateNavigationIcon(); } @Override Loading @@ -617,6 +610,22 @@ public class ToolbarWidgetWrapper implements DecorToolbar { setNavigationIcon(resId != 0 ? mToolbar.getContext().getDrawable(resId) : null); } @Override public void setDefaultNavigationIcon(Drawable defaultNavigationIcon) { if (mDefaultNavigationIcon != defaultNavigationIcon) { mDefaultNavigationIcon = defaultNavigationIcon; updateNavigationIcon(); } } private void updateNavigationIcon() { if ((mDisplayOpts & ActionBar.DISPLAY_HOME_AS_UP) != 0) { mToolbar.setNavigationIcon(mNavIcon != null ? mNavIcon : mDefaultNavigationIcon); } else { mToolbar.setNavigationIcon(null); } } @Override public void setNavigationContentDescription(CharSequence description) { mHomeDescription = description; Loading Loading
core/java/com/android/internal/widget/ActionBarView.java +26 −3 Original line number Diff line number Diff line Loading @@ -1316,6 +1316,11 @@ public class ActionBarView extends AbsActionBarView implements DecorToolbar { mHomeLayout.setUpIndicator(indicator); } @Override public void setDefaultNavigationIcon(Drawable icon) { mHomeLayout.setDefaultUpIndicator(icon); } public void setNavigationIcon(int resId) { mHomeLayout.setUpIndicator(resId); } Loading Loading @@ -1380,6 +1385,7 @@ public class ActionBarView extends AbsActionBarView implements DecorToolbar { private int mStartOffset; private int mUpIndicatorRes; private Drawable mDefaultUpIndicator; private Drawable mUpIndicator; private static final long DEFAULT_TRANSITION_DURATION = 150; Loading Loading @@ -1409,13 +1415,30 @@ public class ActionBarView extends AbsActionBarView implements DecorToolbar { } public void setUpIndicator(Drawable d) { mUpView.setImageDrawable(d != null ? d : mDefaultUpIndicator); mUpIndicator = d; mUpIndicatorRes = 0; updateUpIndicator(); } public void setDefaultUpIndicator(Drawable d) { mDefaultUpIndicator = d; updateUpIndicator(); } public void setUpIndicator(int resId) { mUpIndicatorRes = resId; mUpView.setImageDrawable(resId != 0 ? getContext().getDrawable(resId) : null); mUpIndicator = null; updateUpIndicator(); } private void updateUpIndicator() { if (mUpIndicator != null) { mUpView.setImageDrawable(mUpIndicator); } else if (mUpIndicatorRes != 0) { mUpView.setImageDrawable(getContext().getDrawable(mUpIndicatorRes)); } else { mUpView.setImageDrawable(mDefaultUpIndicator); } } @Override Loading @@ -1423,7 +1446,7 @@ public class ActionBarView extends AbsActionBarView implements DecorToolbar { super.onConfigurationChanged(newConfig); if (mUpIndicatorRes != 0) { // Reload for config change setUpIndicator(mUpIndicatorRes); updateUpIndicator(); } } Loading
core/java/com/android/internal/widget/DecorToolbar.java +1 −0 Original line number Diff line number Diff line Loading @@ -90,6 +90,7 @@ public interface DecorToolbar { void setNavigationContentDescription(CharSequence description); void setNavigationContentDescription(int resId); void setDefaultNavigationContentDescription(int defaultNavigationContentDescription); void setDefaultNavigationIcon(Drawable icon); void saveHierarchyState(SparseArray<Parcelable> toolbarStates); void restoreHierarchyState(SparseArray<Parcelable> toolbarStates); }
core/java/com/android/internal/widget/ToolbarWidgetWrapper.java +26 −17 Original line number Diff line number Diff line Loading @@ -84,6 +84,7 @@ public class ToolbarWidgetWrapper implements DecorToolbar { private int mNavigationMode = ActionBar.NAVIGATION_MODE_STANDARD; private int mDefaultNavigationContentDescription = 0; private Drawable mDefaultNavigationIcon; public ToolbarWidgetWrapper(Toolbar toolbar, boolean style) { this(toolbar, style, R.string.action_bar_up_description); Loading @@ -96,11 +97,10 @@ public class ToolbarWidgetWrapper implements DecorToolbar { mTitle = toolbar.getTitle(); mSubtitle = toolbar.getSubtitle(); mTitleSet = mTitle != null; if (style) { final TypedArray a = toolbar.getContext().obtainStyledAttributes(null, R.styleable.ActionBar, R.attr.actionBarStyle, 0); mDefaultNavigationIcon = a.getDrawable(R.styleable.ActionBar_homeAsUpIndicator); if (style) { final CharSequence title = a.getText(R.styleable.ActionBar_title); if (!TextUtils.isEmpty(title)) { setTitle(title); Loading @@ -120,12 +120,9 @@ public class ToolbarWidgetWrapper implements DecorToolbar { if (icon != null) { setIcon(icon); } final Drawable navIcon = a.getDrawable(R.styleable.ActionBar_homeAsUpIndicator); if (navIcon != null) { setNavigationIcon(navIcon); if (mDefaultNavigationIcon != null) { setNavigationIcon(mDefaultNavigationIcon); } setDisplayOptions(a.getInt(R.styleable.ActionBar_displayOptions, 0)); final int customNavId = a.getResourceId( Loading Loading @@ -167,11 +164,10 @@ public class ToolbarWidgetWrapper implements DecorToolbar { if (popupTheme != 0) { mToolbar.setPopupTheme(popupTheme); } a.recycle(); } else { mDisplayOpts = detectDisplayOptions(); } a.recycle(); setDefaultNavigationContentDescription(defaultNavigationContentDescription); mHomeDescription = mToolbar.getNavigationContentDescription(); Loading Loading @@ -204,6 +200,7 @@ public class ToolbarWidgetWrapper implements DecorToolbar { ActionBar.DISPLAY_USE_LOGO; if (mToolbar.getNavigationIcon() != null) { opts |= ActionBar.DISPLAY_HOME_AS_UP; mDefaultNavigationIcon = mToolbar.getNavigationIcon(); } return opts; } Loading Loading @@ -410,11 +407,9 @@ public class ToolbarWidgetWrapper implements DecorToolbar { if (changed != 0) { if ((changed & ActionBar.DISPLAY_HOME_AS_UP) != 0) { if ((newOpts & ActionBar.DISPLAY_HOME_AS_UP) != 0) { mToolbar.setNavigationIcon(mNavIcon); updateHomeAccessibility(); } else { mToolbar.setNavigationIcon(null); } updateNavigationIcon(); } if ((changed & AFFECTS_LOGO_MASK) != 0) { Loading Loading @@ -607,9 +602,7 @@ public class ToolbarWidgetWrapper implements DecorToolbar { @Override public void setNavigationIcon(Drawable icon) { mNavIcon = icon; if ((mDisplayOpts & ActionBar.DISPLAY_HOME_AS_UP) != 0) { mToolbar.setNavigationIcon(icon); } updateNavigationIcon(); } @Override Loading @@ -617,6 +610,22 @@ public class ToolbarWidgetWrapper implements DecorToolbar { setNavigationIcon(resId != 0 ? mToolbar.getContext().getDrawable(resId) : null); } @Override public void setDefaultNavigationIcon(Drawable defaultNavigationIcon) { if (mDefaultNavigationIcon != defaultNavigationIcon) { mDefaultNavigationIcon = defaultNavigationIcon; updateNavigationIcon(); } } private void updateNavigationIcon() { if ((mDisplayOpts & ActionBar.DISPLAY_HOME_AS_UP) != 0) { mToolbar.setNavigationIcon(mNavIcon != null ? mNavIcon : mDefaultNavigationIcon); } else { mToolbar.setNavigationIcon(null); } } @Override public void setNavigationContentDescription(CharSequence description) { mHomeDescription = description; Loading