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

はしかし動作するようには思えない - それを行う方法はありますか?

はもう少し後に

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

[OK]をありがとうこれは私がやった方法です:

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

なぜドロワブルの代わりにアイテムタグを使用しないのですか? – Ixx

+0

こんにちは、ごめんなさい申し訳ありませんが、私は従いませんか? – user291701

答えて

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

関連する問題