diff options
| author | 2011-09-22 16:38:11 -0700 | |
|---|---|---|
| committer | 2011-09-22 18:53:15 -0700 | |
| commit | d65b3b99f087113a3a75991663e5676bb106fa0b (patch) | |
| tree | f388e13c71d2339666e6352e68a9a27a7e5da229 | |
| parent | e94d950d122005bb10e11dd18b6029d0108f2fbe (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.java | 20 |
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); |