从代码更改布局的背景颜色
Change the background color of a layout from the code
我有一个视图,它具有定义的可绘制背景(使它成为一个圆圈)并为其提供基本背景颜色:
circle_block.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid
android:color="#aaaaaa" />
</shape>
在activity_main.xml:
<LinearLayout
android:id="@+id/result_container"
android:background="@drawable/circle_block"
android:orientation="vertical"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginTop="15dp"
android:gravity="center"
android:layout_gravity="center">
我尝试仅更改代码中的背景颜色,但没有成功。
MainActivity.java:
private LinearLayout container;
// on create
container = (LinearLayout) findViewById(R.id.result_container);
container.setBackgroundColor(0x4CAF50);
但它只是变白了。保持椭圆形很重要。
在 res/values 文件夹中创建 colors.xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="blue">#ff64c2f4</color>
</resources>
然后:
container.setBackgroundColor(getResources().getColor(R.color.blue));
当您的线性布局由自定义背景组成时,请尝试以下操作
GradientDrawable drawable = container.getBackground();
drawable.setColor(yourcolorvalue);
这里
container.setBackgroundColor(0x4CAF50);
此行将使用 circle_block.xml
替换您在 xml 中设置的背景
因此,如果您想更改布局背景可绘制颜色,请使用 Drawable.setColorFilter
:
Drawable drawable = getResources().getDrawable(R.drawable.circle_block);
drawable.setColorFilter(0x4CAF50, PorterDuff.Mode.SRC_ATOP);
container.setBackgroundDrawable(drawable);
这将更改布局背景中当前形状的颜色
我有一个视图,它具有定义的可绘制背景(使它成为一个圆圈)并为其提供基本背景颜色:
circle_block.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape
xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="oval">
<solid
android:color="#aaaaaa" />
</shape>
在activity_main.xml:
<LinearLayout
android:id="@+id/result_container"
android:background="@drawable/circle_block"
android:orientation="vertical"
android:layout_width="150dp"
android:layout_height="150dp"
android:layout_marginTop="15dp"
android:gravity="center"
android:layout_gravity="center">
我尝试仅更改代码中的背景颜色,但没有成功。
MainActivity.java:
private LinearLayout container;
// on create
container = (LinearLayout) findViewById(R.id.result_container);
container.setBackgroundColor(0x4CAF50);
但它只是变白了。保持椭圆形很重要。
在 res/values 文件夹中创建 colors.xml 文件:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="blue">#ff64c2f4</color>
</resources>
然后:
container.setBackgroundColor(getResources().getColor(R.color.blue));
当您的线性布局由自定义背景组成时,请尝试以下操作
GradientDrawable drawable = container.getBackground();
drawable.setColor(yourcolorvalue);
这里
container.setBackgroundColor(0x4CAF50);
此行将使用 circle_block.xml
因此,如果您想更改布局背景可绘制颜色,请使用 Drawable.setColorFilter
:
Drawable drawable = getResources().getDrawable(R.drawable.circle_block);
drawable.setColorFilter(0x4CAF50, PorterDuff.Mode.SRC_ATOP);
container.setBackgroundDrawable(drawable);
这将更改布局背景中当前形状的颜色