Reputation: 22671
I have an app where I allow the user to change the theme to change through preferences. I am just changing the from Theme.Holo
to Theme.Holo.Light
. Everything works fine, except the action bar action icons.
How do I change the icons depending upon theme? Currently they are hardcoded in menu.xml
as follows:
<item android:id="@+id/action_search"
app:showAsAction="collapseActionView|always"
android:icon="@drawable/ic_action_search"
android:orderInCategory="50"
app:actionViewClass="android.support.v7.widget.SearchView"
android:title="@string/action_search"/>
<item
android:id="@+id/action_expandall"
android:orderInCategory="55"
app:showAsAction="never"
android:title="@string/action_expandall"/>
<item
android:id="@+id/action_collapseall"
android:orderInCategory="60"
app:showAsAction="never"
android:title="@string/action_collapseall"/>
<item
android:id="@+id/action_selecteverything"
android:orderInCategory="101"
app:showAsAction="never"
android:title="@string/action_selecteverything"/>
<item
android:id="@+id/action_selectallcategories"
android:orderInCategory="102"
app:showAsAction="never"
android:title="@string/action_selectallcategories"/>
<item
android:id="@+id/action_selectallfeeds"
android:orderInCategory="103"
app:showAsAction="never"
android:title="@string/action_selectallfeeds"/>
<item
android:id="@+id/action_selectnone"
android:orderInCategory="104"
app:showAsAction="never"
android:title="@string/action_selectnone"/>
<item
android:id="@+id/action_settings"
android:orderInCategory="105"
app:showAsAction="never"
android:icon="@drawable/action_settings"
android:title="@string/action_settings"/>
<item
android:id="@+id/action_refresh"
android:orderInCategory="107"
app:showAsAction="always"
android:icon="@drawable/navigation_refresh"
android:title="@string/action_refresh"/>
<item
android:id="@+id/action_accept"
android:orderInCategory="108"
app:showAsAction="always"
android:icon="@drawable/navigation_accept"
android:title="@string/action_accept"/>
<item
android:id="@+id/action_logout"
android:orderInCategory="109"
app:showAsAction="never"
android:title="@string/action_logout"/>
<item
android:id="@+id/action_about"
android:orderInCategory="110"
app:showAsAction="never"
android:title="@string/action_about"/>
Upvotes: 0
Views: 378
Reputation: 547
One posible solution is to create two different menus.xml holding the light and dark icons and before you inflate the menu, check what the current theme is and choose one or another.
EDIT:
Here @Steven Byle has resolved this in a more beautiful way (which is using themes): https://stackoverflow.com/a/14608585/2025299
Upvotes: 1