2012-06-23 67 views
1

我正在創建一個支持版本2.1並且達到當前可用的應用程序的應用程序。 現在,我想在設計我創建的ActionBar時使用可用於用戶當前主題和/或Android版本的drawable。在基於主題的菜單中設置可繪製圖標

在Android提供的每個版本中啓用的drawables非常清晰且不含糊,非常適合我的需求。 問題。例如,在我的項目中,我無法訪問我的XML文件中的@android:drawable/ic_menu_refesh。 當然有可能從特定的Android版本複製圖標並使用這些圖標,但我無法真正瞭解如何在不復制每個版本的每個版本的圖標並保持跟蹤版本Android目前正在運行並引用合適的drawable。

另一個問題,像Sense這樣的主題(?)讓事情變得更加困難。在我的應用程序中,我想使用該設備的當前主題。在我的情況下,我有一個使用Dark Holo主題的ICS設備和一個使用默認主題的2.3.6設備。在這些情況下,這意味着要爲ActionBar /菜單選擇一個合適的淺色可繪圖。 問題。在我的HTC Sensation S的Sense中,菜單項的背景顏色是白色的,這意味着我現在必須選擇合適的黑色圖標。

我該如何去關於這個能夠使用該設備的當前主題,並仍然提供適應性繪圖,以便它們符合&的主題感受?

回答

0

我可以做這項工作的唯一方法是複製我想要的Android提供的圖標,然後將它們重新着色成中間灰色陰影。不是一個非常理想的解決方案,但它必須要做。

1

如果我的理解正確,那麼您只需要引用默認圖標,比如說「菜單刷新圖標」,然後讓它在系統應用程序中顯示。我不知道有什麼辦法可以做到這一點,並且回想一下閱讀Android文檔時警告引用默認可繪製對象,因爲這些圖標在未來的Android版本中可能會更改,並且您的應用看起來並不像預期的那樣。

通常,您需要爲每個菜單項/操作欄項目/通知/等創建您自己的圖標。有一些簡單的工具可以爲不同的系統主題創建自定義和默認的Android圖標。您可以使用res文件夾中的資源標識符爲不同的API版本/佈局/密度/等設置不同的圖標。

http://android-ui-utils.googlecode.com/hg/asset-studio/dist/index.html

我不明白爲什麼要設置你的圖標爲灰色......我想你是忘了是你的應用程序設置主題,你可以選擇任何你想要的系統主題,或有從系統主題延伸的自定義主題。無論您選擇黑暗還是明亮,您只需設置您設置的主題的圖標。這裏唯一的提醒就是確保你有不同API版本的圖標(例如菜單圖標2.2 vs 2.3 vs 3.0+),你需要的是製作每個API版本並使用資源標識符來確保你的應用程序使用適當的一個。

如果你的應用程序支持多個主題,你可以讓它爲每個主題使用不同的圖標。看到如何在我回答類似問題時這樣做:

Change ActionBar Menu Icons depending on Style

相關問題