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
当我将mColorResourceId
直接传递给setBackgroundColor(mColorResourceId);
时,尽管方法接受int
值,但它并没有改变颜色。
我的问题为什么我需要这个额外的步骤int color = ContextCompat.getColor(getContext(), mColorResourceId);
来改变颜色?
答案 0 :(得分:5)
setBackgroundColor()
方法接受int
,该aarrggbb
应该是R.color.category_numbers
格式的颜色值。资源ID int
也是color
,但它不是颜色值;相反,它是ContextCompat.getColor(getContext(), mColorResourceId)
资源的标识符。调用mColorResourceId
将检索与# /views/events/splits.html.erb:
<%= link_to "Add",
associate_splits_event_path(id: @event.id, split_ids: [split.id]),
:method => :put,
:class => 'btn btn-xs btn-success' %>
# routes.rb
resources :events do
member { put :associate_splits }
end
对应的实际颜色值。
Android做这种间接的部分原因是提供灵活性。返回的实际颜色可能取决于当前主题或设备配置,并且实际上可能会在运行时更改(取决于您声明颜色资源的方式)。