根据sdk级别为菜单项使用不同的drawable?

时间:2012-02-19 21:16:37

标签: android

我希望菜单项根据api级别使用不同的drawable:

// my_menu.xml
<menu>
  <item android:icon="@style/foo"/>
</menu>

// values/styles.xml
<drawable name="foo">@drawable/apple</drawable>

// values-v11/styles.xml
<drawable name="foo">@drawable/orange</drawable>

似乎没有用 - 有没有办法做到这一点?

谢谢

-------------更新------------------

好好再读一遍后,我就这样做了:

// my_menu.xml
<menu>
  <item style="@style/foo"/>
</menu>

// values/styles.xml
<style name="foo">
    <item name="android:icon">@drawable/apple</item>
</style>

// values-v11/styles.xml
<style name="foo">
    <item name="android:icon">@drawable/orange</item>
</style>

我认为这是lxx的建议。

1 个答案:

答案 0 :(得分:2)

您可以在代码中夸大菜单后以编程方式执行此操作。

        onCreateWhateverMenu(Menu menu){

        ///inflate menu
        ...

        MenuItem item = menu.findItem(itemId)
        if(Build.VERSION.SDK_INT == <insert API level>){
           item.setIcon(your Drawable);
        }
        else{
           item.setIcon(other Drawable);
        }

        ...
    }

希望这有帮助。