在 onCreate 中直接 new View(this) 並呼叫 setBackgroundColor(23423425),結果畫面全黑,顏色完全不如預期。
View.setBackgroundColor(int color) 參數需為 ARGB 32 位整數,最高 8 位為 Alpha(透明度)。直接傳入 23423425(十進位)會被解析為 0x0166 0x66 0x69,Alpha 為 0x01(幾乎全透明),故呈現黑屏。
Color 類別常數view.setBackgroundColor(Color.BLACK); // 0xFF000000
view.setBackgroundColor(Color.RED); // 0xFFFF0000
view.setBackgroundColor(Color.argb(255, 36, 120, 200)); // 自訂 ARGB
view.setBackgroundColor(0xFF2478C8); // 不透明藍色
view.setBackgroundColor(ContextCompat.getColor(this, R.color.my_bg));
| 常數 | ARGB 值 | 顏色 |
|---|---|---|
| BLACK | 0xFF000000 | 黑 |
| DKGRAY | 0xFF444444 | 深灰 |
| GRAY | 0xFF888888 | 灰 |
| LTGRAY | 0xFFCCCCCC | 淺灰 |
| WHITE | 0xFFFFFFFF | 白 |
| RED | 0xFFFF0000 | 紅 |
Color.argb() 或資源檔,避免手寫十六進位出錯。setBackgroundResource() 或 setBackgroundDrawable()。android:background="@color/xxx",更簡潔。記住:顏色整數必須包含 Alpha 通道(0xFFxxxxxx 才不透明),黑屏問題即刻解決。