setBackgroundColor(int)不对回收器中的视图起作用。 setBackgroundResource()确实有效

时间:2016-05-01 15:40:40

标签: android colors setbackground

我有一个回收站视图,其中包含特定日期的类列表。每个类都有与之关联的特定颜色。此颜色显示在每个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); 确实有效并设置视图的背景颜色。

为什么传递整数颜色值并不会导致颜色显示?

2 个答案:

答案 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))