From af2d85973ed768e390bc2f40f255ea39cc6f6fe5 Mon Sep 17 00:00:00 2001 From: Adam Powell Date: Tue, 26 Aug 2014 18:06:40 -0700 Subject: Adjust toolbar/action bar title handling Treat activity title changes as window title changes when propagating to action bars. This gives it lower priority if a "hard" title has been set. Fix some lifecycle handling around this that previously resulted in multiple calls. Automatically detect the starting display options for a ToolbarWidgetWrapper if we're not grabbing them from styles. This prevents setTitle and friends from going totally out to lunch if constructed around a Toolbar with no starting title. Bug 17138048 Change-Id: I9f58a3d222546745c8aa873e996b8f0d52a0ad21 --- core/java/android/app/ActionBar.java | 4 ++++ core/java/android/app/Activity.java | 6 +++--- core/java/com/android/internal/app/ToolbarActionBar.java | 5 +++++ core/java/com/android/internal/app/WindowDecorActionBar.java | 5 +++++ .../com/android/internal/widget/ToolbarWidgetWrapper.java | 11 +++++++++++ 5 files changed, 28 insertions(+), 3 deletions(-) diff --git a/core/java/android/app/ActionBar.java b/core/java/android/app/ActionBar.java index b74c8249c72c..014a7af130e0 100644 --- a/core/java/android/app/ActionBar.java +++ b/core/java/android/app/ActionBar.java @@ -1061,6 +1061,10 @@ public abstract class ActionBar { return false; } + /** @hide */ + public void setWindowTitle(CharSequence title) { + } + /** * Listener interface for ActionBar navigation events. * diff --git a/core/java/android/app/Activity.java b/core/java/android/app/Activity.java index 2e66a4c97995..b1cf5b5b1cf0 100644 --- a/core/java/android/app/Activity.java +++ b/core/java/android/app/Activity.java @@ -5019,9 +5019,9 @@ public class Activity extends ContextThemeWrapper win.setTitleColor(color); } } - } - if (mActionBar != null) { - mActionBar.setTitle(title); + if (mActionBar != null) { + mActionBar.setWindowTitle(title); + } } } diff --git a/core/java/com/android/internal/app/ToolbarActionBar.java b/core/java/com/android/internal/app/ToolbarActionBar.java index 13eb18205890..abe8a9f26313 100644 --- a/core/java/com/android/internal/app/ToolbarActionBar.java +++ b/core/java/com/android/internal/app/ToolbarActionBar.java @@ -225,6 +225,11 @@ public class ToolbarActionBar extends ActionBar { mDecorToolbar.setTitle(resId != 0 ? mDecorToolbar.getContext().getText(resId) : null); } + @Override + public void setWindowTitle(CharSequence title) { + mDecorToolbar.setWindowTitle(title); + } + @Override public void setSubtitle(CharSequence subtitle) { mDecorToolbar.setSubtitle(subtitle); diff --git a/core/java/com/android/internal/app/WindowDecorActionBar.java b/core/java/com/android/internal/app/WindowDecorActionBar.java index b58e1dbe25b4..a8f7bb391412 100644 --- a/core/java/com/android/internal/app/WindowDecorActionBar.java +++ b/core/java/com/android/internal/app/WindowDecorActionBar.java @@ -431,6 +431,11 @@ public class WindowDecorActionBar extends ActionBar implements mDecorToolbar.setTitle(title); } + @Override + public void setWindowTitle(CharSequence title) { + mDecorToolbar.setWindowTitle(title); + } + public void setSubtitle(CharSequence subtitle) { mDecorToolbar.setSubtitle(subtitle); } diff --git a/core/java/com/android/internal/widget/ToolbarWidgetWrapper.java b/core/java/com/android/internal/widget/ToolbarWidgetWrapper.java index 5da5ae918c6b..250bbac1067e 100644 --- a/core/java/com/android/internal/widget/ToolbarWidgetWrapper.java +++ b/core/java/com/android/internal/widget/ToolbarWidgetWrapper.java @@ -162,6 +162,8 @@ public class ToolbarWidgetWrapper implements DecorToolbar { } a.recycle(); + } else { + mDisplayOpts = detectDisplayOptions(); } if (TextUtils.isEmpty(mToolbar.getNavigationContentDescription())) { @@ -181,6 +183,15 @@ public class ToolbarWidgetWrapper implements DecorToolbar { }); } + private int detectDisplayOptions() { + int opts = ActionBar.DISPLAY_SHOW_TITLE | ActionBar.DISPLAY_SHOW_HOME | + ActionBar.DISPLAY_USE_LOGO; + if (mToolbar.getNavigationIcon() != null) { + opts |= ActionBar.DISPLAY_HOME_AS_UP; + } + return opts; + } + @Override public ViewGroup getViewGroup() { return mToolbar; -- cgit v1.2.3-59-g8ed1b