2012-02-19 52 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

相關問題