summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Adam Powell <adamp@google.com> 2011-09-22 16:38:11 -0700
committer Adam Powell <adamp@google.com> 2011-09-22 18:53:15 -0700
commitd65b3b99f087113a3a75991663e5676bb106fa0b (patch)
treef388e13c71d2339666e6352e68a9a27a7e5da229
parente94d950d122005bb10e11dd18b6029d0108f2fbe (diff)
Fix bug 5355912 - SearchView in ActionBar with
Theme.Holo.Light.DarkActionBar gets black text Make sure that menus generated for use in action bars get themed correctly. Change-Id: I14ba676d296c785514425d40d89e62dc4ff1da1a
-rw-r--r--policy/src/com/android/internal/policy/impl/PhoneWindow.java20
1 files changed, 19 insertions, 1 deletions
diff --git a/policy/src/com/android/internal/policy/impl/PhoneWindow.java b/policy/src/com/android/internal/policy/impl/PhoneWindow.java
index bca95d3438e9..53b64a6bef4b 100644
--- a/policy/src/com/android/internal/policy/impl/PhoneWindow.java
+++ b/policy/src/com/android/internal/policy/impl/PhoneWindow.java
@@ -43,6 +43,7 @@ import android.app.KeyguardManager;
import android.content.Context;
import android.content.pm.ActivityInfo;
import android.content.res.Configuration;
+import android.content.res.Resources;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.graphics.PixelFormat;
@@ -63,6 +64,7 @@ import android.util.Log;
import android.util.SparseArray;
import android.util.TypedValue;
import android.view.ActionMode;
+import android.view.ContextThemeWrapper;
import android.view.Gravity;
import android.view.IRotationWatcher;
import android.view.IWindowManager;
@@ -990,7 +992,23 @@ public class PhoneWindow extends Window implements MenuBuilder.Callback {
* @return Whether the initialization was successful.
*/
protected boolean initializePanelMenu(final PanelFeatureState st) {
- final MenuBuilder menu = new MenuBuilder(getContext());
+ Context context = getContext();
+
+ // If we have an action bar, initialize the menu with a context themed for it.
+ if ((st.featureId == FEATURE_OPTIONS_PANEL || st.featureId == FEATURE_ACTION_BAR) &&
+ mActionBar != null) {
+ TypedValue outValue = new TypedValue();
+ Resources.Theme currentTheme = context.getTheme();
+ currentTheme.resolveAttribute(com.android.internal.R.attr.actionBarWidgetTheme,
+ outValue, true);
+ final int targetThemeRes = outValue.resourceId;
+
+ if (targetThemeRes != 0 && context.getThemeResId() != targetThemeRes) {
+ context = new ContextThemeWrapper(context, targetThemeRes);
+ }
+ }
+
+ final MenuBuilder menu = new MenuBuilder(context);
menu.setCallback(this);
st.setMenu(menu);