2011-05-01 24 views
4

根據設備中使用的當前主題,我注意到了UI設備之間的UI顏色(例如按鈕背景/文本顏色)所有設備更改。在所有Android設備中保持一致的UI顏色

對Android應用程序應用自定義UI顏色的最佳做法是什麼,以便在所有Android設備上爲我的應用程序使用相同的顏色方案。我可以在UI項目上設置文本/背景顏色。我想知道是否有一個地方可以定義所有將覆蓋手機上應用的主題的顏色。

thx。

回答

5

是的,有一個地方,你可以爲你的應用程序中定義這些值。請參閱Android文檔中的Styles and Themes瞭解它的工作原理。

樣式只是將值映射到預定義的名稱。如果您發現自己在佈局中重複了許多常用屬性,則可以將其歸入樣式中。例如,您可能有一種特殊的按鈕樣式,用於定義特定的背景和文字顏色。

主題是一種元風格。它可以通過AndroidManifest.xml應用於Activity或甚至整個應用程序。除此之外,它還定義了用於控制UI外觀其他部分的小部件和值的默認樣式。

當您嘗試在應用程序的其他自定義用戶界面中與系統融合時,可以查詢當前主題的值。就像您在引用系統資源時使用@參考語法@android:drawable/foo一樣,當您要使用存儲在系統主題屬性foo中的值時,可以使用語法?android:attr/foo

對於您的情況,如果您想要在整個應用中更改主要文字顏色,請應用自定義主題來設置屬性textColorPrimary。如果您只想確定應用程序的某個元素正在使用您的應用程序正在運行的設備所定義的主要文本顏色,則可以設置android:textColor="?android:attr/textColorPrimary"。同樣的原則也適用於其他地方。

如果您想查看系統中使用的屬性,它們在此文件中定義爲Android框架的一部分:frameworks/base/core/res/res/values/attrs.xml。查看頂部的XML元素<declare-styleable name="Theme">的孩子。要查看系統設置這些內容的示例,請參閱themes.xml在同一個目錄中。最後,並非所有這些屬性都是公共的 - 非公共屬性不能由應用程序設置,它們是Android框架的實現細節。請參閱public.xml以獲取可在應用程序中使用哪些屬性的完整列表。

1

最佳實踐是將apply a custom theme添加到您的應用程序,並根據需要覆蓋儘可能多的默認屬性。

幾乎一切都可以改變,除了

  • AlertDialogMenu
  • 某些屬性
  • OS提供意見,如快速搜索欄(可以使用自定義對話框更改)(QSB )

如果您喜歡默認SDK資源的外觀,那麼您可以在sdk_folder/platforms/android-9/data/res/(替換爲9與你想要的資源的SDK版本) - 將你想要的那些複製到你的應用程序中並引用它們。

你可以看看SDK使用主題:

相關問題