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



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



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



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



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



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



Android activity design

636   7  

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-файл и использование прямого шестнадцатеричного кода, как описано выше, все равно будут работать.

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

Color Wheel in Android Studio

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

android:background="#FFFFFF"

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

ответы прежде всего статичны. Я думал, что дам динамичный ответ. Два файла, которые должны быть синхронизированы относительные 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

    Ничего не найдено.