Android Studio 0.4.6
minSdkVersion 10
targetSdkVersion 19
您好,
我有一个名为ReadingLamp
的活动和一个名为activity_reading_lamp.xml
的相对布局。
我正在尝试将布局设置为不同的背景颜色。
在我的onCreate中,将内容视图设置为此布局。
setContentView(R.layout.activity_reading_lamp);
我尝试通过执行以下操作获取根视图:
mActivityBackground = getWindow().getDecorView().getRootView();
然后在我的应用程序中我想改变颜色,所以我喜欢这样:
mActivityBackground.setBackgroundColor(Color.parseColor("#0cf5ff"));
但是,上述行没有做任何改变背景的事情。
我也尝试过以下操作:
mActivityBackground = (RelativeLayout)findViewById(R.layout.activity_reading_lamp);
我只是想知道我的代码在哪里出错?
非常感谢任何建议,
答案 0 :(得分:5)
您已在setContentView(R.layout.activity_reading_lamp);
中声明Activity
。然后,您应该查找要更改背景颜色的视图。它必须属于R.layout.activity_reading_lamp
。
View view = findViewById(R.id.declared_inside_reading_lamp);
然后你可以打电话
view.setBackgroundColor(Color.GREEN)
答案 1 :(得分:2)
您必须确保activity_reading_lamp.xml
中的所有布局都具有透明背景
答案 2 :(得分:2)
您需要指定需要设置的背景。例如,您可以为活动的父布局设置id,然后执行以下操作:
RelativeLayout parentLayout = (RelativeLayout)findViewById(R.id."your parent layout id and not your activity name");
parentLayout.setBackgroundColor(Color.TRANSPARENT);
答案 3 :(得分:2)
如果您想转换为新颜色,请尝试以下方法:
@SuppressLint("NewApi") private void tintColor(View rootView, String newColor) {
// currentColor can be given as a new parameter or set as a field
ColorDrawable[] color = {
new ColorDrawable(Color.parseColor(currentColor)),
new ColorDrawable(Color.parseColor(newColor)) };
TransitionDrawable trans = new TransitionDrawable(color);
int sdk = android.os.Build.VERSION.SDK_INT;
if (sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) {
rootView.setBackgroundDrawable(trans);
} else {
rootView.setBackground(trans);
}
trans.startTransition(ANIMATION_TIME); // ANIMATION_TIME : time in milliseconds
}
代码接受十六进制颜色字符串。
答案 4 :(得分:2)
RelativeLayout rl = (RelativeLayout)findViewById(R.id.your_layout_id);
rl.setBackgroundColor(Color.RED);