Настройка цвета фона элемента макета Android

Я пытаюсь, несколько клонировать дизайн мероприятия из набора слайдов в дизайне Android UI. Однако у меня проблема с очень простой задачей.

Я создал макет, как показано на изображении, а заголовок TextView в RelativeLayout. Теперь я хочу изменить цвет фона RelativeLayout, однако я не могу понять, как это сделать.

Я знаю, что могу установить свойство android:background в теге RelativeLayout в файле XML, но к чему его установить? Я хочу определить новый цвет, который я могу использовать в нескольких местах. Это drawable или string?

Кроме того, я ожидал бы, что это будет очень простой способ для этого в дизайнере пользовательского интерфейса Android Eclipse, который мне не хватает?

В настоящее время я немного расстроен, так как это должно быть действие, которое выполняется с максимальным количеством кликов. Поэтому любая помощь очень ценится.:)

Android activity design

Ответ 1

Вы можете использовать простые цветовые ресурсы, обычно заданные внутри res/values/colors.xml.

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

и используйте это через android:background="@color/red". Этот цвет можно использовать и в другом месте, например. как цвет текста. Ссылка на него в XML так же, или получить его в коде через getResources().getColor(R.color.red).

Вы также можете использовать любой ресурс, отрисовывающийся в качестве фона, используйте для этого android:background="@drawable/mydrawable" (это означает, что выходы 9patch, обычные растровые изображения, фигурные чертежи,..).

Ответ 2

Приведенные выше ответы хороши. Вы также можете сделать это программно, если хотите

Во-первых, ваш макет должен иметь идентификатор. Добавьте его, написав следующую +id в res/layout/*. Xml

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

Ответ 3

Вы можете использовать android:background="#DC143C" или любые другие RGB значения для вашего цвета. У меня нет проблем с этим использовать, как указано здесь

Ответ 4

res/values/colors.xml.

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

пример не работал у меня, но

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

работал у меня в относительном элементе макета как атрибуте.

Ответ 5

Если вы хотите быстро изменить цвет (и вы не сохранили Hex-номера), у android есть несколько предустановленных цветов, которые вы можете получить так:

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

Есть 15 цветов, которые вы можете выбрать, из которых приятно проверять вещи быстро, и вам не нужно настраивать дополнительные файлы.

Настройка файла values ​​/colors.xml и использование прямого Hex, как описано выше, по-прежнему будут работать.

Ответ 6

Android studio 2.1.2 (или, возможно, раньше) позволит вам выбрать цветное колесо:

Цветное колесо в Android Studio

Я получил это, добавив в свой макет следующее:

android:background="#FFFFFF"

Затем я нажал на цвет FFFFFF и нажал на появившуюся лампочку.

Ответ 7

Котлин

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

или же

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

-

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

Ответ 8

Ответы прежде всего статичны. Я думал, что предоставлю динамический ответ. Два файла, которые должны быть синхронизированы - это относительный foo.xml с макетом и activity_bar.java который соответствует классу Java, соответствующему этому R.layout.foo.

В foo.xml установите идентификатор для всего макета:

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

И в onCreate() 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);
        ...
    }
    ...
}

Надеюсь, это поможет.

Ответ 9

Привязка данных

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

ИЛИ более полезный statement-

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

XML

<LinearLayout
    android:background="#FFFFFF"

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

Джава

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