【发布时间】:2019-04-21 06:41:47
【问题描述】:
我遇到了奇怪的问题。我有一个 RelativeLayout,我通过以下方式在 XML 中定义背景颜色:
<RelativeLayout ..
android:background="#449966">
</RelativeLayout>
现在我想以编程方式更新背景颜色,所以我这样做了:
view.setBackgroundColor( Color.argb( 255, 200, 150, 133 ) );
只有当我从 XML 文件中删除 background 属性时,这才奇怪地起作用。如果存在 background 属性,则在以编程方式设置时背景颜色不会改变。
所以由于 background 属性似乎期望 Drawable,我想也许我也需要创建一个可绘制对象并改用 setBackground 方法,所以我做了:
Drawable newColor = new ColorDrawable( Color.argb( 255, 200, 150, 133 ) );
view.setBackground( newColor );
但如果 background 属性存在于 XML 中,背景颜色仍然不会改变。似乎如果 background 属性是在 XML 中定义的,它就不能被“覆盖”。
有什么建议吗?谢谢!
【问题讨论】:
-
我真正能想到的唯一会导致所描述行为的事情是,您以某种方式结束了重叠的
Views,并且您的代码正在将背景设置在另一个后面。RelativeLayout默认情况下是透明的,所以如果是这种情况,那么当您在布局中指定颜色时,将背景设置在一个“背面”上似乎不起作用,但当您不指定颜色时它会起作用。无论如何,我们需要更多信息来确定问题所在。 -
我检查了你的问题,但它对我有用。你能分享一下你的 Activity 和它的布局吗?