LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linear);
int color = ContextCompat.getColor(getContext(), mColorResourceId);
linearLayout.setBackgroundColor(color);
我有這行代碼: mColorResourceId
它的持有R.color.category_numbers
- >mColorResourceId = R.color.category_numbers
解釋從ContextCompat類使用getColor()方法的主要原因?
當我通過mColorResourceId
直接setBackgroundColor(mColorResourceId);
是,儘管該方法不改變顏色接受int
值。
我的問題爲什麼我需要這個額外的步驟int color = ContextCompat.getColor(getContext(), mColorResourceId);
來改變顏色?
雖然您碰巧想要設置資源的顏色,但其他開發人員可能希望用Java對顏色進行硬編碼,或從文件/數據庫加載顏色,或者將顏色作爲Web服務響應的一部分,或隨機選擇一種顏色。因此,'setBackgroundColor()'採用* color *,而不僅僅是一種顏色的資源ID。 – CommonsWare