Настройка цвета фона элемента макета 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););