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

왜 drawable 대신 item 태그를 사용하지 않습니까? – 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

관련 문제