我有一个回收站视图,其中包含特定日期的类列表。每个类都有与之关联的特定颜色。此颜色显示在每个CardView-
侧面的视图中 <View
android:id="@+id/colourBar"
android:layout_width="4dp"
android:layout_height="60dp"
android:layout_alignParentStart="true"
android:layout_alignParentTop="true"
/>
在我的回收器适配器中,我致电holder.colourBar.setBackgroundColor()
然而,这没有效果。传递的int值肯定是有效的,即使我只是将我的应用程序原色传递给所有这些,它仍然没有显示。
但是,请致电holder.colourBar.setBackgroundResource(R.color.colorPrimaryLight);
确实有效并设置视图的背景颜色。
为什么传递整数颜色值并不会导致颜色显示?
答案 0 :(得分:0)
setBackgroundColor(int)
的输入与setBackgroundResource(int)
不同。
如果您想使用资源,例如R.color.colorPrimaryLight
,那么您应该使用setBackgroundResource(R.color.colorPrimaryLight)
。与setBackgroundColor(int)
等价的是:
setBackgroundColor(getResources().getColor(R.color.colorPrimaryLight));
有效使用setBackgroundColor(int)
类似于setBackgroudColor(Color.parseColor("#FF0000"))
,但尽可能使用资源是最佳做法。
答案 1 :(得分:0)
R.color.colorPrimaryLight
是资源而不是颜色如果您想在setBackgroundColor()
中使用,则必须调用方法getResources().getColor(R.color.colorPrimaryLight)
holder.colourBar.setBackgroundColor(getResources().getColor(R.color.colorPrimaryLight))