在将此标记为重复之前,请先阅读我的问题。
我有一个id为“矩形”的形状,如下所示:
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/rectangle">
<padding android:left="2dp"
android:top="2dp"
android:right="2dp"
android:bottom="2dp" />
<corners android:radius="3dp" />
<solid android:color="#ff5900" />
</shape>
我在我的cardview
中使用此形状:
<View
android:id="@+id/myrectangle"
android:layout_width="15dp"
android:layout_height="wrap_content"
android:background="@drawable/rectangle"
android:layout_alignBottom="@+id/desc" />
最后,我尝试在RVAdapter
的{{1}}中设置颜色:
(颜色为cardview
,gd为View
)
Drawable
color = cv.findViewById(R.id.myrectangle);
gd = color.getBackground();
if (omission.gd instanceof ShapeDrawable) {
((ShapeDrawable)omission.gd).getPaint().setColor(Color.parseColor(stundenplandata.getJSONObject(i).getString("color")));
} else if (omission.gd instanceof GradientDrawable) {
((GradientDrawable)omission.gd).setColor(Color.parseColor(stundenplandata.getJSONObject(i).getString("color")));
} else if (omission.gd instanceof ColorDrawable) {
((ColorDrawable)omission.gd).setColor(Color.parseColor(stundenplandata.getJSONObject(i).getString("color")));
}
等只是获取颜色的十六进制代码。
然而,当我这样做时,矩形的颜色不会改变,它实际上会变为白色(记住,它在xml文件中是橙色的)。
我的问题/错误是什么?
编辑:这是视图层次结构:
stundenplandata.getjsonobject
答案 0 :(得分:0)
请尝试以下代码:
GradientDrawable drawable = (GradientDrawable) myrectangle.getBackground();
drawable.setColor(ContextCompat.getColor(context,stundenplandata.getJSONObject(i).getString("color")));
myrectangle.setBackground(drawable);