Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从代码更改布局的背景色_Java_Android_Xml_Android Linearlayout_Android Drawable - Fatal编程技术网

Java 从代码更改布局的背景色

Java 从代码更改布局的背景色,java,android,xml,android-linearlayout,android-drawable,Java,Android,Xml,Android Linearlayout,Android Drawable,我有一个视图,它有一个定义的可绘制背景,使其成为一个圆形,并为其提供基本背景颜色: circle_block.xml: 但它只是变白了。保持椭圆形很重要。在res/values文件夹中创建colors.xml文件: <?xml version="1.0" encoding="utf-8"?> <resources> <color name="blue">#ff64c2f4</color> </resources> 在res/v

我有一个视图,它有一个定义的可绘制背景,使其成为一个圆形,并为其提供基本背景颜色: circle_block.xml:


但它只是变白了。保持椭圆形很重要。

在res/values文件夹中创建colors.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="blue">#ff64c2f4</color>
</resources>

在res/values文件夹中创建colors.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <color name="blue">#ff64c2f4</color>
</resources>

请尝试以下操作,因为线性布局由自定义背景组成

GradientDrawable drawable = container.getBackground();
drawable.setColor(yourcolorvalue);

请尝试以下操作,因为线性布局由自定义背景组成

GradientDrawable drawable = container.getBackground();
drawable.setColor(yourcolorvalue);
这里

container.setBackgroundColor0x4CAF50

此行将替换您正在使用circle_block.xml在xml中设置的背景

因此,如果要更改布局背景可绘制颜色,请使用drawable.setColorFilter:

这将改变当前布局背景中形状的颜色

container.setBackgroundColor0x4CAF50

此行将替换您正在使用circle_block.xml在xml中设置的背景

因此,如果要更改布局背景可绘制颜色,请使用drawable.setColorFilter:


这将更改当前布局背景中形状的颜色

谢谢您的快速回答!它实际上改变了背景色,但破坏了椭圆形。布局必须保持圆形。我能这样做吗?谢谢你的快速回答!它实际上改变了背景色,但破坏了椭圆形。布局必须保持圆形。我能这样做吗?嘿,这不会改变背景颜色。无论如何,谢谢你的回答。@Gofilord:你使用的是不可见的0x4CAF50。用颜色检查一下。雷德威尔,这确实有效。但我看不出我的颜色有什么问题。如何应用十六进制色码?好的,我已经猜出来了。我只需要使用Color.parseColormycolorstringHey,这不会改变背景色。无论如何,谢谢你的回答。@Gofilord:你使用的是不可见的0x4CAF50。用颜色检查一下。雷德威尔,这确实有效。但我看不出我的颜色有什么问题。如何应用十六进制色码?好的,我已经猜出来了。我只需要使用Color.parseColormycolorstring
container.setBackgroundColor(getResources().getColor(R.color.blue));
GradientDrawable drawable = container.getBackground();
drawable.setColor(yourcolorvalue);
Drawable drawable = getResources().getDrawable(R.drawable.circle_block);
drawable.setColorFilter(0x4CAF50, PorterDuff.Mode.SRC_ATOP);
container.setBackgroundDrawable(drawable);