Android:更改活动的背景颜色(主视图)

时间:2012-01-22 12:34:15

标签: java android colors

我想改变主视图(不是按钮或文本视图)的背景颜色,只是通常是黑色的真实背景......我得到了这段代码:

view.setBackgroundColor(0xfff00000);

这是在OnClickListener内,但它只是改变了按钮的背景。

10 个答案:

答案 0 :(得分:57)

尝试在Activity中创建一个方法,例如......

public void setActivityBackgroundColor(int color) {
    View view = this.getWindow().getDecorView();
    view.setBackgroundColor(color);
}

然后从您的OnClickListener中调用它,传入您想要的任何颜色。

答案 1 :(得分:9)

我不知道这是否是您问题的答案,但您可以尝试在xml布局中设置背景颜色,如下所示。它很容易,它总是有效的

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

 android:background="0xfff00000"

  >


<TextView

    android:id="@+id/text_view"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="@string/hello"

    />



</LinearLayout>

你也可以通过创建一个渐变的冷却和半透明的xml背景文件,用背景做更多奇特的事情,并参考它用于其他用途,参见下面的例子:

background.xml布局

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <shape>
        <gradient
            android:angle="90"
            android:startColor="#f0000000"
            android:endColor="#ff444444"
            android:type="linear" />
    </shape>
</item>
</selector>

你的布局

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:orientation="vertical"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

 android:background="@layout/background"


    >


<TextView

    android:id="@+id/text_view"

    android:layout_width="fill_parent"

    android:layout_height="wrap_content"

    android:text="@string/hello"

    />



</LinearLayout>

答案 2 :(得分:7)

只需在相应活动的XML文件中的一行代码下面添加:

android:background="@android:color/black" 

它肯定会帮到你。

答案 3 :(得分:3)

第一种方法

 View someView = findViewById(R.id.randomViewInMainLayout);// get Any child View

  // Find the root view
  View root = someView.getRootView()

  // Set the color
  root.setBackgroundColor(getResources().getColor(android.R.color.red));

第二种方法

在setContentView(...);

之后添加此单行
getWindow().getDecorView().setBackgroundColor(Color.WHITE);

第三种方法

将背景颜色设置为rootView

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FFFFFF"
android:id="@+id/rootView"
</LinearLayout>

重要的事情

rootView.setBackgroundColor(0xFF00FF00); //after 0x the other four pairs are alpha,red,green,blue color. 

答案 4 :(得分:1)

您还可以尝试为主布局提供ID,并通过基本操作和检索更改其背景。 E.g:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/hello"

然后可以通过R.id.hello访问....非常基本的,我希望这确实有帮助:)

答案 5 :(得分:0)

如果你把完整的代码放在这里,我可以帮助你。如果你用XML设置监听器并在View上调用设置的背景颜色,那么它将改变视图的背景颜色意味着它是你的Botton所以把你的听众放在你的活动中,然后改变你的视图的颜色

答案 6 :(得分:0)

我只想加2美分。 我有一个相同的目标(更改.java类的背景色)。但是以上方法都不适合我。

问题是,我使用android:background="@color/colorGray"在布局.xml文件中设置了背景颜色:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:background="@color/colorGray">

所以我刚刚删除了特定行:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">

现在,我(您)可以使用以下代码从代码中设置颜色:

getWindow().getDecorView().setBackgroundColor(Color.GRAY);

答案 7 :(得分:0)

只需转到 activity_main.xml 文件即可。您将在右侧看到一个属性面板,在那里您会找到一个名为“背景”的属性。你可以在那里设置颜色。

答案 8 :(得分:-1)

试试这个:

<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".MainActivity">
<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@color/colorPrimaryDark"


</androidx.constraintlayout.widget.ConstraintLayout>
    />

答案 9 :(得分:-1)

你应该用xml写在背景i

android:background="@drawable/imgname"