首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Android 開發:設置文本顏色為白色的標準屬性與最佳實踐

     編輯:程式設計綜合問答

問題現象

開發者嘗試使用系統主題屬性 ?android:attr/textColorPrimary 或 ?android:attr/textColorSecondary 設置按鈕文本為白色,但結果顯示為黑色。原因是這些屬性值隨主題變化:Light 主題下為深色,Dark 主題下為淺色,非固定白色。

標準解決方案

1. 直接使用系統顏色資源(最簡單)

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="白色文本"
    android:textColor="@android:color/white" />

2. 定義項目級顏色資源(推薦,便於統一維護)

res/values/colors.xml

<resources>
    <color name="white">#FFFFFFFF</color>
    <color name="text_white">#FFFFFFFF</color>
</resources>

佈局中使用

android:textColor="@color/text_white"

3. 主題屬性方式(適配 Day/Night 模式)

res/values/attrs.xml

<attr name="textColorWhite" format="color" />

res/values/themes.xml (Light)

<item name="textColorWhite">@android:color/white</item>

res/values-night/themes.xml (Dark)

<item name="textColorWhite">@android:color/white</item>

佈局中使用

android:textColor="?attr/textColorWhite"

為什麼 textColorPrimary 不固定為白色?

主題textColorPrimarytextColorSecondary
Theme.Material.Light#DE000000 (近黑)#8A000000 (灰黑)
Theme.Material.Dark#FFFFFFFF (白)#B3FFFFFF (灰白)
Theme.Material3.Light#1D1D1D (深灰)#601D1D1D (中灰)

系統主題屬性語義是「主要文本顏色」,而非「白色」。在淺色背景上應為深色,深色背景上應為淺色。

最佳實踐建議

  • 固定白色場景(如深色按鈕背景、ToolBar 標題):直接使用 @android:color/white 或自定義 @color/white。
  • 適配主題場景:定義語義化顏色屬性(如 textColorOnPrimary、textColorOnSurface),在 Light/Dark 主題中分別賦值。
  • 避免硬編碼:不要在代碼中寫 Color.WHITE 或 0xFFFFFFFF,統一使用資源引用。
  • Material Design 規範:參考 colorOnPrimary、colorOnSurface、colorOnBackground 等語義化顏色槽位。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved