Настройка цвета фона элемента макета Android
Я пытаюсь, несколько клонировать дизайн деятельности из набора слайдов на Android UI design. Однако у меня возникли проблемы с очень простой задачей.
Я создал макет, как показано на рисунке, и заголовок TextView на RelativeLayout. Теперь я хочу изменить цвет фона RelativeLayout, однако я не могу понять, как это сделать.
Я знаю, что могу установить android:background собственность в RelativeLayout тег в XML-файле, но что должен ли я установить его? Я хочу, чтобы определить новый цвет, который я могу использовать в нескольких местах. Это drawable или string?
кроме того, я ожидал бы, что будет очень простой способ сделать это из Eclipse Android UI designer, который я должен отсутствовать?
Я немного расстроен в настоящее время, так как это должно быть действие, которое выполняется с помощью нескольких щелчков мыши на максимум. Поэтому любая помощь очень ценится. :)

7 ответов:
можно использовать простые цвета ресурсами, указано, как правило, внутри
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 рисунки, обычные растровые изображения, формы, рисунки, ..).
приведенные выше ответы хороши.Вы также можете пойти так программно, если вы хотите
во-первых, ваш макет должен иметь идентификационный номер. Добавьте его, написав следующее
+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);кроме того, если у вас есть цвет, определенный в цветах.xml, то также вы можете сделать программно:
rl.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.red));
можно использовать
android:background="#DC143C", или любое другое RGB значения для цвета. У меня нет проблем с его использованием таким образом, как указано здесь
The
res/values/colors.xml. <color name="red">#ffff0000</color> android:background="@color/red"пример не работал для меня, но
android:background="#(hexidecimal here without these parenthesis)"работал для меня в относительном элементе макета в качестве атрибута.
Если вы хотите быстро изменить цвет (и у вас нет шестнадцатеричных чисел) android имеет несколько предустановленных цветов, к которым вы можете получить доступ следующим образом:
android:background="@android:color/black"есть 15 цветов, которые вы можете выбрать, что хорошо для быстрого тестирования вещей, и вам не нужно настраивать дополнительные файлы.
настройки значений цвета.xml-файл и использование прямого шестнадцатеричного кода, как описано выше, все равно будут работать.
ответы прежде всего статичны. Я думал, что дам динамичный ответ. Два файла, которые должны быть синхронизированы относительные
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); ... } ... }Я надеюсь, что это помогает.

Comments