我试着从Android UI设计的幻灯片中克隆一个活动的设计。然而,我有一个非常简单的任务的问题。

我已经创建了如图所示的布局,头部是一个RelativeLayout中的TextView。现在我想改变相对布局的背景颜色,但我似乎不知道该怎么做。

我知道我可以在XML文件中的RelativeLayout标签中设置android:background属性,但我该将其设置为什么呢?我想定义一个新的颜色,我可以在多个地方使用。它是可绘制的还是字符串?

此外,我希望有一个非常简单的方法来从Eclipse Android UI设计器,我必须错过?

我现在有点沮丧,因为这应该是一个最多只需点击几下就能执行的活动。所以任何帮助都是非常感激的。:)


当前回答

上面的答案很不错。如果你愿意,你也可以像这样编程

首先,你的布局应该有一个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));

其他回答

以上的答案都是静态的。我想我可以给出一个有力的答案。需要同步的两个文件是相对于布局的foo.xml和对应于r.b ayout.foo的Java类的activity_bar.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);
        ...
    }
    ...
}

我希望这能有所帮助。

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

我通过在我的布局中添加以下内容来获得这一点:

android:background="#FFFFFF"

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

4种可能的方法,用你需要的。

1. Kotlin

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

2. 数据绑定

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

或者更有用的语句-

<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));

上面的答案很不错。如果你愿意,你也可以像这样编程

首先,你的布局应该有一个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));

The

res/values/colors.xml.

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

例子对我没用,但是

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

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