一直试图找出一年现在。很久以前就有了一个临时的解决方法,但是当我准备在已开发的应用程序中添加新功能时,问题又回来了。如何在android应用程序中动态设置背景颜色?
主要目标:让用户能够选择几乎任何颜色作为应用程序的背景。
当前迭代:我有2个可绘制的图像,一个绿色,一个蓝色。用户能够在两者之间切换,但只能通过:
if (bgColor) {
getWindow().setBackgroundDrawable(getResources().getDrawable(R.drawable.custom_blue_background_simple));
}
else {
getWindow().setBackgroundDrawable(getResources().getDrawable(R.drawable.custom_green_background));
}
}
博客上,如果用户更改默认从绿色的背景下,以蓝色布尔。
现在,我想切换到的颜色,而不是可绘,我曾尝试:
LayoutInflater layInflate = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View view = layInflate.inflate(R.layout.main_activity_layout, null);
mainLayout = (RelativeLayout) view.findViewById(R.id.mainActivityRelativeLayoutId);
mainLayout.setBackgroundResource(R.color.colorRed);
,但它不会做任何事情!
因此,然后我尝试像使用可绘制图像一样使用它,但颜色(类型int)不是类型可绘制的!所以这段代码也不起作用。
困境和问题:我有一个颜色选择器设置/偏好。用户可以从中挑选任何颜色,并将其保存为int类型的颜色。 它成功地接受文本颜色:
textView.setTextColor(colorPickerColor);
colorPickerColor是从颜色选择器优先检索int类型的变量
但是,试图用它来改变布局或意见的背景时,它什么都不做。即使设置常量/硬编码颜色也不会改变颜色(如上面的代码所示)。我用颜色改变背景的唯一方法是用户可绘制(现在为我工作,但效率非常低,因为我必须为每种可选颜色提供单独的可绘图,可能为数百或数十亿),或者颜色的十六进制代码,但硬编码到布局的XML中,因为将它放在代码中什么也不做(因为用户将无法选择,所以不会有用)。
什么是正确的方式来改变一个布局的背景颜色通过指定一个类型为int的颜色以编程方式/动态通过代码?我的应用程序支持的最小API是14
注意:我搜索了,但是出现的每个结果都没有关联,或者没有工作。
你尝试过'view.setBackgroundColor(int color)'吗?用法示例:'mainLayout.setBackgroundColor(0xFF000000);' – Isaac
@Isaac正确。记住领先的FF,因此它完全不透明。 –
@isaac这不会做任何事情。这不就是我在做什么吗? –