簡體   English   中英

所有 Android 設備中的 UI 顏色一致

[英]Consistent UI color in all Android devices

我注意到 UI 顏色(例如按鈕背景/文本顏色)會根據設備中使用的當前主題在設備之間發生變化。

為 Android 應用程序應用自定義 UI colors 的最佳實踐是什么,以便我在所有 Android 設備中的應用程序具有相同的配色方案。 我可以在 UI 項上設置文本/背景顏色。 我想知道是否有一個地方可以定義所有 colors 將覆蓋手機上應用的當前主題。

謝謝。

是的,您可以在一個地方為您的應用定義這些值。 有關其工作原理,請參閱 Android 文檔中的Styles 和主題

樣式只是值到預定義名稱的映射。 如果您發現自己在布局中重復了許多常見屬性,則可以將其分解為樣式。 例如,您可能有一個特殊的按鈕樣式,它定義了特定的背景和文本顏色。

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

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

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

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

最佳實踐是將自定義主題應用於您的應用程序,並根據需要覆蓋盡可能多的默認屬性。

幾乎所有東西都可以改變,除了

  • Menu
  • AlertDialog的一些屬性(可以使用自定義對話框更改這些屬性)
  • 操作系統提供的視圖,例如快速搜索欄 (QSB)

如果您喜歡默認 SDK 資源的外觀,那么您可以在sdk_folder/platforms/android-9/data/res/中找到這些(將9替換為您想要的資源的 SDK 版本) - 將您想要的資源復制到您的應用程序中並參考那些。

您可以查看 SDK 使用的主題:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM