web-dev-qa-db-fra.com

Définition de la couleur d'arrière-plan de l'élément de présentation Android

J'essaie de, un peu cloner la conception d'une activité à partir d'un ensemble de diapositives sur la conception de l'interface utilisateur Android . Cependant, j'ai un problème avec une tâche très simple.

J'ai créé la mise en page comme indiqué dans l'image et l'en-tête est une TextView dans une RelativeLayout. Maintenant, je souhaite changer la couleur de fond de la RelativeLayout, mais je n'arrive pas à comprendre comment.

Je sais que je peux définir la propriété Android:background dans la balise RelativeLayout du fichier XML, mais à quoi dois-je la définir? Je veux définir une nouvelle couleur que je peux utiliser à plusieurs endroits. Est-ce une drawable ou une string?

De plus, je m'attendrais à ce qu'il existe un moyen très simple d'y parvenir à partir du concepteur d'interface utilisateur Android Eclipse que je dois manquer?

Je suis un peu frustré actuellement, car il s’agit là d’une activité réalisée en quelques clics maximum. Donc, toute aide est très appréciée. :)

Android activity design

178

Vous pouvez utiliser ressources colorimétriques simples , spécifié généralement dans res/values/colors.xml.

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

et utilisez ceci via Android:background="@color/red". Cette couleur peut être utilisée n’importe où ailleurs, par exemple. comme une couleur de texte. Référencez-le en XML de la même manière, ou obtenez-le en code via getResources().getColor(R.color.red).

Vous pouvez également utiliser n’importe quelle ressource dessinable en tant que fond, utilisez Android:background="@drawable/mydrawable" pour cela (c’est-à-dire 9patch drawables, bitmaps normal, shape drawables, ..).

264
user658042

Les réponses ci-dessus sont bien. Vous pouvez également procéder ainsi si vous le souhaitez.

Tout d'abord, votre mise en page doit avoir un identifiant. Ajoutez-le en écrivant la ligne suivante +id dans res/layout/*. Xml

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

Ensuite, dans votre code Java, apportez les modifications suivantes.

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

à part cela, si vous avez la couleur définie dans le fichier colors.xml, vous pouvez aussi faire par programme:

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

Vous pouvez utiliser Android:background="#DC143C" ou toute autre valeur RGB pour votre couleur. Je n'ai aucun problème à l'utiliser de cette façon, comme indiqué ici _

37
yjw

Le

res/values/colors.xml.

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

exemple n'a pas fonctionné pour moi, mais le

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

travaillé pour moi dans l'élément de mise en page relatif en tant qu'attribut.

21
user2585548

Si vous souhaitez modifier une couleur rapidement (et que vous n'avez pas de numéros hexadécimaux mémorisés), Android a quelques couleurs prédéfinies auxquelles vous pouvez accéder comme ceci:

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

Vous pouvez choisir parmi 15 couleurs, ce qui est pratique pour tester rapidement les choses, et vous n'avez pas besoin de configurer de fichiers supplémentaires.

Configurer un fichier values ​​/ colors.xml et utiliser un hexagone droit, comme expliqué ci-dessus, fonctionnera toujours.

16
kgibilterra

Android studio 2.1.2 (ou éventuellement plus tôt) vous permettra de choisir parmi une roue chromatique:

 Color Wheel in Android Studio

Je l'ai obtenu en ajoutant ce qui suit à ma mise en page:

Android:background="#FFFFFF"

Puis j'ai cliqué sur la couleur FFFFFF et cliqué sur l'ampoule qui est apparue.

2
Shygar

Kotlin

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

ou

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

-

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

4 façons possibles, utilisez celle dont vous avez besoin.

1. Kotlin

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

2. Liaison de données

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

OUplus utile déclaration-

<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

Les réponses sont avant tout statiques. Je pensais apporter une réponse dynamique. Les deux fichiers devant être synchronisés sont le foo.xml relatif avec la mise en page et le activity_bar.Java qui correspond à la classe Java correspondant à ce R.layout.foo.

Dans foo.xml, définissez un identifiant pour la mise en page complète:

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

Et dans activity_bar.Java définissez la couleur dans la 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);
        ...
    }
    ...
}

J'espère que ça aide.

0
T.Woody