I have a strange behaviour on Samsung devices (Galaxy S4, Galaxy Note, ...). In our App we have a themed Actionbar (using ActionbarCompat) with a search interface. Basically we followed the tutorial here: http://developer.android.com/guide/topics/search/search-dialog.html
This is the default look of our Actionbar which works fine:
Furthermore, if i touch the search icon the theme is also applied and works well:
But if I do a long press on the menu button of Samsung devices, the search will be opened with an default theme:
I already added the theme in our (custom)-Application class, but no change appears.
@Override
public void onCreate() {
super.onCreate();
setTheme(R.style.ClassicTheme);
}
How can I avoid this strange behaviour? Do I have to add something to our styles? This is my basic theme:
<style name="ClassicTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<item name="themeIdentifier">classic</item>
<item name="android:windowBackground">@color/grey_default</item>
<item name="popupMenuStyle">@style/ClassicTheme.PopupMenu</item>
<item name="textAppearanceLargePopupMenu">
@style/ClassicTheme.PopupMenuTextAppearanceLarge
</item>
<item name="textAppearanceSmallPopupMenu">
@style/ClassicTheme.PopupMenuTextAppearanceSmall
</item>
<item name="android:popupMenuStyle">@style/ClassicTheme.PopupMenu</item>
<item name="actionBarSearchIcon">@drawable/ic_classic_menu_search</item>
<item name="actionBarSearchBackground">@drawable/textfield_classic_ab</item>
<item name="actionBarToggler">@drawable/ic_classic_menu_menu_left</item>
<item name="android:actionBarStyle">@style/ClassicTheme.ActionBar</item>
<item name="android:dropDownListViewStyle">@style/ClassicTheme.DropDownListView</item>
<item name="dropDownListViewStyle">@style/ClassicTheme.DropDownListView</item>
<item name="android:actionDropDownStyle">@style/ClassicTheme.DropDownNav</item>
<item name="android:actionBarWidgetTheme">@style/ClassicTheme.Widget</item>
<item name="android:actionOverflowButtonStyle">@style/ClassicTheme.OverFlow</item>
<item name="android:actionBarItemBackground">@drawable/selector_classic_simple_fast</item>
<item name="android:spinnerItemStyle">@style/ClassicTheme.SpinnerItemStyle</item>>
</style>
<style name="ClassicTheme.SpinnerItemStyle" parent="@android:style/Widget.TextView.SpinnerItem">
<item name="android:textColor">@android:color/white</item>
</style>
<style name="ClassicTheme.ActionBar" parent="@style/Widget.AppCompat.Light.ActionBar.Solid.Inverse">
<item name="android:background">@color/grey_darker</item>
<item name="android:backgroundStacked">@color/grey_darker</item>
<item name="android:backgroundSplit">@color/grey_darker</item>
<item name="android:progressBarStyle">@color/grey_darker</item>
</style>
<style name="ClassicTheme.ListPopupMenu" parent="@style/Widget.AppCompat.ListPopupWindow">
<item name="android:popupBackground">@drawable/bg_classic_menu_dropdown</item>
</style>
<style name="ClassicTheme.DropDownListView" parent="@style/Widget.AppCompat.ListView.DropDown">
<item name="android:listSelector">@drawable/selector_classic_simple</item>
<item name="android:divider">@color/grey_divider</item>
<item name="android:dividerHeight">1dp</item>
</style>
<!--<item name="android:background">@drawable/spinner_background_ab_ClassicTheme</item>-->
<style name="ClassicTheme.DropDownNav" parent="@style/Widget.AppCompat.Spinner.DropDown.ActionBar">
<item name="android:background">@drawable/selector_classic_spinner_ab</item>
<item name="android:popupBackground">@drawable/bg_classic_menu_dropdown</item>
<item name="android:dropDownSelector">@drawable/selector_classic_simple</item>
<item name="android:textColor">@android:color/white</item>
</style>
<!-- this style is only referenced in a Light.DarkActionBar based theme -->
<style name="ClassicTheme.Widget" parent="@style/Theme.AppCompat">
<item name="android:popupMenuStyle">@style/ClassicTheme.PopupMenu</item>
<item name="android:dropDownListViewStyle">@style/ClassicTheme.DropDownListView</item>
<item name="searchViewAutoCompleteTextView">@style/ClassicTheme.SearchViewStyle</item>
<item name="textAppearanceSearchResultSubtitle">@style/ClassicTheme.SearchSuggestionSubtitleStyle</item>
</style>
<style name="ClassicTheme.OverFlow" parent="@style/Widget.AppCompat.ActionButton.Overflow">
<item name="android:src">@drawable/ic_classic_menu_overflow</item>
</style>
<style name="ClassicTheme.PopupMenu" parent="@style/Widget.AppCompat.PopupMenu">
<item name="android:popupBackground">@drawable/bg_classic_menu_dropdown</item>
<item name="android:textColor">@android:color/white</item>
</style>
<style name="ClassicTheme.PopupMenuTextAppearanceSmall" parent="@style/TextAppearance.AppCompat.Widget.PopupMenu.Small">
<item name="android:textColor">@android:color/white</item>
</style>
<style name="ClassicTheme.PopupMenuTextAppearanceLarge" parent="@style/TextAppearance.AppCompat.Widget.PopupMenu.Large">
<item name="android:textColor">@android:color/white</item>
</style>
</resources>
Update 21.07.2014: I tried to add actionModeBackground-attribute in my style:
<item name="actionModeBackground">@drawable/cab_background_top_example</item>
<item name="android:actionModeBackground">@drawable/cab_background_top_example</item>
But this will only change the look of the actionbar, if I make a selection in a listview. Long-Pressing the menu button keeps the actionbar white.
Furthermore I investigated some time in Android search_bar.xml resource. (https://android.googlesource.com/platform/frameworks/base/+/refs/heads/master/core/res/res/layout/search_bar.xml) In this file the background will be configured by actionModeBackground-Attribute, but I do not have any idea, why this does not work in my special case.