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. :)
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, ..).
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));
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
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.
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ć.
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:
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.
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.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