2012-03-06 95 views
12

我有我的Android菜單的圖標。在Android 3+上,我使用黑色的ActionBar,因此圖標是白色的。但是,在Android 2.x上,菜單本質上是白色的,這意味着圖標幾乎不可見。我如何爲不同的版本使用不同的菜單圖標?我假設我可以使用res/drawable-mdpi-v11等不同的可繪製目錄來做到這一點,但我想知道是否有另一種方式,因此我不必創建一堆不同的目錄,因爲我添加了版本或像素密度。使用不同的圖標和不同的Android SDK版本

編輯:我把res/drawable-mdpi和res/drawable-hdpi中的黑暗版本與Android 2.x一起使用,並且將res/drawable-mdpi-v11和res/drawable-hdpi-v11與Android 3.x和更高版本一起使用,但是我的Android 2.1(sdk 7)仿真器仍然顯示輕型版本。

任何想法爲什麼?

回答

19

您可以根據平臺版本選擇主題,如Styles and Themes開發指南中所述。定義一個風格在你的RES /價值/ styles.xml這樣的:

<style name="ThemeSelector" parent="android:Theme.Light"> 
    ... 
</style> 

然後在RES /值-V11 /文件夾,選擇你的主題(也許全息,如果你是暗)

<style name="ThemeSelector" parent="android:Theme.Holo"> 
    ... 
</style> 

然後爲該樣式添加圖標。例如,以下是HoneycombGallery示例應用程序中styles.xml文件的一個片段。

<style name="AppTheme.Dark" parent="@android:style/Theme.Holo"> 
    ... 
    <item name="menuIconCamera">@drawable/ic_menu_camera_holo_dark</item> 
    <item name="menuIconToggle">@drawable/ic_menu_toggle_holo_dark</item> 
    <item name="menuIconShare">@drawable/ic_menu_share_holo_dark</item> 
</style> 

底部3個元素都是可繪製目錄中的所有圖標。每個分辨率特定的圖標組仍然至少需要一個文件夾,但是您可以將深色圖標組合成同一個文件夾,但不必爲每個平臺版本具有不同的文件夾圖標。此外,你需要列出它們作爲值/ attrs.xml文件引用,就像這樣:

<resources> 
    <declare-styleable name="AppTheme"> 
    <attr name="listDragShadowBackground" format="reference" /> 
    <attr name="menuIconCamera" format="reference" /> 
    <attr name="menuIconToggle" format="reference" /> 
    <attr name="menuIconShare" format="reference" /> 
    </declare-styleable> 
</resources> 

此時你就可以使用「您的佈局XML中引用它們? attr/NameOfYourDrawable「取消引用,如下所示:

<item android:id="@+id/menu_camera" 
     android:title="@string/camera" 
     android:icon="?attr/menuIconCamera" 
     android:showAsAction="ifRoom" /> 
6

發現在Android開發人員網站:http://developer.android.com/guide/practices/ui_guidelines/icon_design_menu.html

警告:由於這些資源平臺版本之間切換,您應該使用Android平臺的資源ID無法引用這些圖標(即android.R.drawable下菜單圖標) 。如果要使用任何圖標或其他內部可繪製資源,則應在應用程序資源中存儲這些圖標或繪圖的本地副本,然後從應用程序代碼中引用本地副本。這樣,即使系統的副本發生更改,您也可以保持對圖標外觀的控制。請注意,下面的網格並不是完整的。

/RES /提拉 - 華電國際(在Android 2.2及以下)

/RES /提拉 - HDPI-V#(適用於Android 2.3及以上)

您是否也嘗試在2.1測試這個+手機,而不是一個模擬器?如果您沒有電話,請嘗試創建另一個AVD?恐怕你需要單獨的文件夾。

希望這會有所幫助。

+0

這正是我所需要的。我在我的應用程序中與光明和黑暗的圖標集打架。自2。3和使用白色菜單和3.0及以上使用標準主題的黑暗菜單,我不能只使用一個圖標集。謝謝! – kenyu73 2012-07-13 04:08:06

+1

這應該是答案。效果很好 – 2013-12-29 17:30:35

相關問題