it-swarm.com.ru

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

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

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

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

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

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

Android activity design

178
Bjarke Freund-Hansen

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

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

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

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

264
user658042

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

Во-первых, ваш макет должен иметь идентификатор. Добавьте его, написав следующую строку +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));
85
Android Killer

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

37
yjw

res/values/colors.xml.

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

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

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

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

21
user2585548

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

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

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

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

16
kgibilterra

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

 Color Wheel in Android Studio

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

Android:background="#FFFFFF"

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

2
Shygar

Котлин

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

или же

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

-

linearLayout.setBackgroundColor(ContextCompat.getColor(Vista.context, R.color.newColor))
1
Bemtorres

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}"

ИЛИболее полезное утверждение-

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

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

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

<?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);
        ...
    }
    ...
}

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

0
T.Woody