2012-02-19 18 views
1

我想这取决于API级的菜单项使用不同的绘制:基于sdk级别使用不同的可绘制菜单项?

// 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建议。

+0

为什么不使用item tag而不是drawable? – Ixx 2012-02-19 21:29:28

+0

嗨,对不起,请您详细说明,我不遵循? – user291701 2012-02-19 22:42:35

回答

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); 
     } 

     ... 
    } 

希望这会有所帮助。

+0

嗨,我可以这样做,当然希望得到一个纯粹的xml方法来保持代码中的细节。谢谢! – user291701 2012-02-19 22:43:14

相关问题