如何根据主题更改操作栏操作图标

时间:2014-05-31 19:29:39

标签: android

我有一个应用程序,我允许用户更改主题以更改首选项。我只是将Theme.Holo更改为Theme.Holo.Light。除了动作栏动作图标外,一切正常。

如何根据主题更改图标?目前,它们在menu.xml中进行了硬编码,如下所示:

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

1 个答案:

答案 0 :(得分:1)

一个可行的解决方案是创建两个不同的menu.xml,其中包含浅色和深色图标,在您夸大菜单之前,请检查当前主题是什么,然后选择一个或另一个。

编辑:

@Steven Byle以更美丽的方式(使用主题)解决了这个问题:https://stackoverflow.com/a/14608585/2025299