设置Android布局元素的背景颜色

时间:2011-09-11 13:48:22

标签: android android-layout user-experience adt

我试图克服活动from a set of slides on Android UI design的设计。但是我遇到了一个非常简单的任务问题。

我创建了图片中显示的布局,标头是TextView中的RelativeLayout。现在我想改变RelativeLayout的背景颜色,但我似乎无法弄清楚如何。

我知道我可以在XML文件的android:background标记中设置RelativeLayout属性,但是我将其设置为什么?我想定义一种可以在多个地方使用的新颜色。是drawable还是string

此外,我希望在Eclipse Android UI设计器中有一个非常简单的方法,我必须要丢失它?

我目前有点沮丧,因为这应该是最多只需点击几下就能完成的活动。所以任何帮助都非常感谢。 :)

Android activity design

9 个答案:

答案 0 :(得分:266)

您可以使用simple color resources,通常在res/values/colors.xml内指定。

<color name="red">#ffff0000</color>

并通过android:background="@color/red"使用此功能。这种颜色也可以在任何其他地方使用,例如作为文字颜色。以相同的方式在XML中引用它,或通过getResources().getColor(R.color.red)在代码中获取它。

你也可以使用任何drawable resource作为背景,为此使用android:background="@drawable/mydrawable"(这意味着9patch drawables,普通位图,形状drawables,..)。

答案 1 :(得分:86)

以上答案很好。如果你想要

,你也可以这样编程

首先,您的布局应该有一个ID。通过在res / layout / * .xml

中编写+id行后面来添加它
<RelativeLayout ...
...
android:id="@+id/your_layout_id"
...
</RelativeLayout>

然后,在您的Java代码中,进行以下更改。

RelativeLayout rl = (RelativeLayout)findViewById(R.id.your_layout_id);
rl.setBackgroundColor(Color.RED);

除此之外,如果你在colors.xml中定义了颜色,那么你也可以通过编程方式进行:

rl.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.red));

答案 2 :(得分:38)

您可以使用android:background="#DC143C"或任何其他 RGB 值作为颜色。如上所述here

,这样使用它没有问题

答案 3 :(得分:21)

res/values/colors.xml.

<color name="red">#ffff0000</color>
android:background="@color/red"

示例对我不起作用,但是

android:background="#(hexidecimal here without these parenthesis)"

在相对布局元素中作为属性为我工作。

答案 4 :(得分:16)

如果你想快速更改颜色(并且你没有记下Hex号码),android有一些你可以访问的预设颜色:

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

您可以选择15种颜色,非常适合快速测试,而且您不需要设置其他文件。

设置values / colors.xml文件并使用如上所述的直接十六进制仍然有效。

答案 5 :(得分:2)

Android studio 2.1.2(或可能更早)将允许您从色轮中选择:

Color Wheel in Android Studio

我通过在布局中添加以下内容来实现此目的:

android:background="#FFFFFF"

然后我点击FFFFFF颜色并点击出现的灯泡。

答案 6 :(得分:1)

科特林

linearLayout.setBackgroundColor(Color.rgb(0xf4,0x43,0x36))

<color name="newColor">#f44336</color>

-

linearLayout.setBackgroundColor(ContextCompat.getColor(vista.context, R.color.newColor))

答案 7 :(得分:1)

4种可能的方法,使用您需要的一种。

1。科特林

val ll = findViewById<LinearLayout>(R.id.your_layout_id)
ll.setBackgroundColor(ContextCompat.getColor(this, R.color.white))

2。数据绑定

<LinearLayout
    android:background="@{@color/white}"

OR 更有用的声明-

<LinearLayout
    android:background="@{model.colorResId}"

3。 XML

<LinearLayout
    android:background="#FFFFFF"

<LinearLayout
    android:background="@color/white"

4。 Java

LinearLayout ll = (LinearLayout) findViewById(R.id.your_layout_id);
ll.setBackgroundColor(ContextCompat.getColor(this, R.color.white));

答案 8 :(得分:0)

最重要的是静态的。我以为我会提供一个动态的答案。需要同步的两个文件是具有布局的相对foo.xmlactivity_bar.java,它们对应于与此R.layout.foo对应的Java类。

foo.xml中为整个布局设置一个ID:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout android:id="@+id/foo" .../>

然后在activity_bar.java中设置onCreate()的颜色:

public class activity_bar extends AppCompatActivty {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.foo);

            //Set an id to the layout
        RelativeLayout currentLayout = 
                    (RelativeLayout) findViewById(R.id.foo);

        currentLayout.setBackgroundColor(Color.RED);
        ...
    }
    ...
}

我希望这会有所帮助。