Ustawianie koloru tła elementu układu Android

Staram się nieco sklonować projekt aktywności z zestawu slajdów na Android UI design . Mam jednak problem z bardzo prostym zadaniem.

Utworzyłem układ jak pokazano na obrazku, a nagłówek to TextView w RelativeLayout. Teraz chcę zmienić kolor tła RelativeLayout, jednak nie wiem jak.

Wiem, że mogę ustawić właściwość android:background w znaczniku RelativeLayout w pliku XML, ale na co ją ustawić? Chcę zdefiniować nowy kolor, który mogę wykorzystać w wielu miejscach. Czy to drawable czy string?

Dodatkowo spodziewałbym się, że będzie bardzo prosty sposób, aby to zrobić z poziomu Eclipse Android UI designer, że muszę być brakuje?

Jestem obecnie trochę sfrustrowany, ponieważ powinno to być działanie wykonywane maksymalnie za pomocą kilku kliknięć. Więc każda pomoc jest bardzo doceniana. :)

Android activity design

Author: Bjarke Freund-Hansen, 2011-09-11

7 answers

Możesz użyć prostych zasobów kolorów , określonych Zwykle wewnątrz res/values/colors.xml.

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

I użyj tego przez android:background="@color/red". Kolor ten może być używany wszędzie indziej, np. jako kolor tekstu. Odwołaj się do niego w XML w ten sam sposób lub pobierz go w kodzie przez getResources().getColor(R.color.red).

Możesz również użyć dowolnego drawable resource jako tła, użyj android:background="@drawable/mydrawable" do tego (oznacza to 9patch drawables, normal bitmaps, shape drawables, ..).

 256
Author: ,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-09-11 14:28:19

Powyższe odpowiedzi są miłe.Możesz również przejść tak programowo, jeśli chcesz

Po pierwsze, twój układ powinien mieć identyfikator. Dodaj go, wpisując następujący wiersz +id w res / layout/*.xml

<RelativeLayout ...
...
android:id="@+id/your_layout_id"
...
</RelativeLayout>

Następnie w kodzie Java wprowadź następujące zmiany.

RelativeLayout rl = (RelativeLayout)findViewById(R.id.your_layout_id);
rl.setBackgroundColor(Color.RED);

Poza tym, jeśli masz kolor zdefiniowany w kolorach.xml, wtedy również można zrobić programowo:

rl.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.red));
 83
Author: Android Killer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-01-16 05:22:55

Możesz użyć android:background="#DC143C", lub dowolnych innych wartości RGB dla Twojego koloru. Nie mam problemu z używaniem go w ten sposób, jak stwierdzono tutaj

 37
Author: yjw,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-06 06:33:14

The

res/values/colors.xml.

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

Przykład nie zadziałał dla mnie, ale

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

Pracował dla mnie w elemencie relative layout jako atrybut.

 19
Author: user2585548,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-31 20:29:30

Jeśli chcesz szybko zmienić kolor (a nie masz zapamiętanych liczb Hex), android ma kilka wstępnie ustawionych kolorów, do których możesz uzyskać dostęp w następujący sposób:

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

Istnieje 15 kolorów, z których możesz wybrać, co jest dobre do szybkiego testowania rzeczy i nie musisz konfigurować dodatkowych plików.

Ustawianie wartości / kolorów.plik xml i używanie prostego Hex, jak wyjaśniono powyżej, nadal będzie działać.

 15
Author: kgibilterra,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-29 16:15:34

Android studio 2.1.2 (lub ewentualnie wcześniejszy) pozwoli Ci wybrać z koła kolorów:

Koło kolorów w Android Studio

Otrzymałem to dodając do mojego layoutu:

android:background="#FFFFFF"

Potem kliknąłem na kolor FFFFFF i kliknąłem na żarówkę, która się pojawiła.

 2
Author: Shygar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-08-08 14:10:56

Odpowiedzi są przede wszystkim statyczne. Pomyślałem, że udzielę dynamicznej odpowiedzi. Dwa pliki, które będą musiały być zsynchronizowane to względne {[2] } z układem i activity_bar.java, które odpowiadają klasie Java odpowiadającej temu R.layout.foo.

W foo.xml Ustaw id dla całego układu:

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

I w activity_bar.java Ustaw kolor w 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);
        ...
    }
    ...
}
Mam nadzieję, że to pomoże.
 0
Author: T.Woody,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-09-05 23:57:52