summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Adam Powell <adamp@google.com> 2014-08-26 18:06:40 -0700
committer Adam Powell <adamp@google.com> 2014-08-26 18:28:17 -0700
commitaf2d85973ed768e390bc2f40f255ea39cc6f6fe5 (patch)
treed9764231b50f8433e5fb58b99b3ae5fe90f74607
parent412e4e203f9675300c1fc8aa444a49360a5423c0 (diff)
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
-rw-r--r--core/java/android/app/ActionBar.java4
-rw-r--r--core/java/android/app/Activity.java6
-rw-r--r--core/java/com/android/internal/app/ToolbarActionBar.java5
-rw-r--r--core/java/com/android/internal/app/WindowDecorActionBar.java5
-rw-r--r--core/java/com/android/internal/widget/ToolbarWidgetWrapper.java11
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
@@ -226,6 +226,11 @@ public class ToolbarActionBar extends ActionBar {
}
@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;