And*_*tib 0 android converter getcolor
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linear);
int color = ContextCompat.getColor(getContext(), mColorResourceId);
linearLayout.setBackgroundColor(color);
Run Code Online (Sandbox Code Playgroud)
我有这些代码:
mColorResourceId它是hold R.color.category_numbers- >mColorResourceId = R.color.category_numbers
当我mColorResourceId直接传递给setBackgroundColor(mColorResourceId);它时,尽管方法接受int值,但它不会改变颜色.
我的问题为什么我需要这个额外的步骤int color = ContextCompat.getColor(getContext(), mColorResourceId);来改变颜色?
该setBackgroundColor()方法接受一个int应该是aarrggbb格式的颜色值.资源ID R.color.category_numbers也是一个int,但它不是颜色值; 相反,它是color资源的标识符.调用ContextCompat.getColor(getContext(), mColorResourceId)检索对应的实际颜色值mColorResourceId.
Android做这种间接的部分原因是提供灵活性.返回的实际颜色可能取决于当前主题或设备配置,并且可能在运行时实际更改(取决于您声明颜色资源的方式).