it-swarm.it

Impostazione del colore di sfondo dell'elemento di layout Android

Sto provando a, in qualche modo clonare il design di un'attività da una serie di diapositive sul design dell'interfaccia utente Android . Tuttavia ho un problema con un compito molto semplice.

Ho creato il layout come mostrato nell'immagine e l'intestazione è un TextView in un RelativeLayout. Ora desidero cambiare il colore di sfondo di RelativeLayout, tuttavia non riesco a capire come.

So che posso impostare la proprietà Android:background nel tag RelativeLayout nel file XML, ma come faccio a impostarla? Voglio definire un nuovo colore che posso usare in più posti. È un drawable o un string?

Inoltre mi aspetto che ci sia un modo molto semplice per farlo all'interno del designer dell'interfaccia utente Android di Eclipse che devo mancare?

Al momento sono un po 'frustrato, perché dovrebbe essere un'attività che viene eseguita con pochi clic al massimo. Quindi qualsiasi aiuto è molto apprezzato. :)

Android activity design

178

Puoi usare semplici risorse di colore , specificate solitamente all'interno di res/values/colors.xml.

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

e usalo tramite Android:background="@color/red". Questo colore può essere utilizzato anche altrove, ad es. come colore del testo. Riferiscilo in XML allo stesso modo, o prendilo in codice tramite getResources().getColor(R.color.red).

Puoi anche usare qualsiasi risorsa disegnabile come sfondo, usa Android:background="@drawable/mydrawable" per questo (che significa drawpatch da 9patch, bitmap normali, shape drawable, ..).

264
user658042

Le risposte di cui sopra sono belle. Puoi anche andare così a livello di programmazione se vuoi

Innanzitutto, il tuo layout dovrebbe avere un ID. Aggiungilo scrivendo seguendo la riga +id in res/layout/*. Xml

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

Quindi, nel codice Java, apporta le seguenti modifiche.

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

a parte questo, se hai il colore definito in colors.xml, allora puoi anche farlo a livello di codice:

rl.setBackgroundColor(ContextCompat.getColor(getContext(), R.color.red));
85
Android Killer

Puoi utilizzare Android:background="#DC143C", o qualsiasi altro valore RGB per il tuo colore. Non ho problemi ad usarlo in questo modo, come dichiarato qui

37
yjw

Il

res/values/colors.xml.

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

esempio non ha funzionato per me, ma il

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

ha funzionato per me nell'elemento di layout relativo come attributo.

21
user2585548

Se vuoi cambiare rapidamente un colore (e non hai memorizzato i numeri esadecimali) Android ha alcuni colori preimpostati a cui puoi accedere in questo modo:

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

Ci sono 15 colori tra cui scegliere, che è Nice per testare rapidamente le cose, e non è necessario impostare altri file.

L'impostazione di un file values ​​/ colors.xml e l'utilizzo di esadecimale come nell'esempio sopra descritto continueranno a funzionare.

16
kgibilterra

Android studio 2.1.2 (o forse prima) ti permetterà di scegliere tra una ruota dei colori:

 Color Wheel in Android Studio

Ho ottenuto questo aggiungendo quanto segue al mio layout:

Android:background="#FFFFFF"

Quindi ho fatto clic sul colore FFFFFF e ho fatto clic sulla lampadina che è comparsa.

2
Shygar

Kotlin

linearLayout.setBackgroundColor(Color.rgb(0xf4,0x43,0x36))

o

<color name="newColor">#f44336</color>

-

linearLayout.setBackgroundColor(ContextCompat.getColor(Vista.context, R.color.newColor))
1
Bemtorres

4 modi possibili, usa quello che ti serve.

1. Kotlin

val ll = findViewById<LinearLayout>(R.id.your_layout_id)
ll.setBackgroundColor(ContextCompat.getColor(this, R.color.white))

2. Associazione dati

<LinearLayout
    Android:background="@{@color/white}"

Opiù utile istruzione-

<LinearLayout
    Android:background="@{model.colorResId}"

3. XML

<LinearLayout
    Android:background="#FFFFFF"

<LinearLayout
    Android:background="@color/white"

4. Java

LinearLayout ll = (LinearLayout) findViewById(R.id.your_layout_id);
ll.setBackgroundColor(ContextCompat.getColor(this, R.color.white));
0
Khemraj

Le risposte soprattutto sono statiche. Ho pensato di fornire una risposta dinamica. I due file che devono essere sincronizzati sono i relativi foo.xml con il layout e activity_bar.Java che corrisponde alla classe Java corrispondente a questo R.layout.foo.

In foo.xml imposta un id per l'intero layout:

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

E in activity_bar.Java imposta il colore in 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);
        ...
    }
    ...
}

Spero che questo possa essere d'aiuto.

0
T.Woody