0

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"/>

Madhur Ahuja
  • 22,211
  • 14
  • 71
  • 124

1 Answers1

1

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

Community
  • 1
  • 1
Aldo Borrero
  • 547
  • 4
  • 11